node.json path instead of dir
All checks were successful
Tests / test (push) Successful in 11s

This commit is contained in:
Adam Štrauch 2024-12-09 02:00:38 +01:00
parent ec78765e4f
commit f7acde85c0
Signed by: cx
GPG key ID: 7262DAFE292BCE20
5 changed files with 18 additions and 32 deletions

View file

@ -23,11 +23,6 @@ jobs:
with: with:
go-version: '1.23' go-version: '1.23'
# - name: Install dependencies
# run: |
# sudo apt-get update
# sudo apt-get install -y task
- name: Run tests - name: Run tests
run: task test run: task test
@ -35,16 +30,6 @@ jobs:
run: | run: |
task build VERSION=${{ github.event.inputs.version }} task build VERSION=${{ github.event.inputs.version }}
# - name: Upload Release Asset
# uses: actions/upload-release-asset@v1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# upload_url: ${{ github.event.release.upload_url }}
# asset_path: ./lobby2-${{ github.ref_name }}-amd64
# asset_name: lobby2-${{ github.ref_name }}-amd64
# asset_content_type: application/octet-stream
- uses: actions/forgejo-release@v2 - uses: actions/forgejo-release@v2
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -19,4 +19,4 @@ tasks:
cmds: cmds:
- go mod tidy - go mod tidy
- mkdir -p bin - mkdir -p bin
- go build -o bin/lobby2-{{ .VERSION }}-amd64 cli/*.go - go build -o bin/lobby2-{{ .VERSION }}-linux-amd64 cli/*.go

View file

@ -28,7 +28,7 @@ func masterAction(c *cli.Context) error {
func nodeAction(c *cli.Context) error { func nodeAction(c *cli.Context) error {
cfg := GetConfig() cfg := GetConfig()
r := refresher.NewRefresher(cfg.NodeDirPath, cfg.ConfigPath) r := refresher.NewRefresher(cfg.NodePath, cfg.ConfigPath)
r.Loop() r.Loop()
return nil return nil

View file

@ -10,9 +10,9 @@ type Config struct {
APIListen string `envconfig:"LISTEN" default:"0.0.0.0:1352"` APIListen string `envconfig:"LISTEN" default:"0.0.0.0:1352"`
APIToken string `envconfig:"TOKEN" default:""` APIToken string `envconfig:"TOKEN" default:""`
DumpPath string `envconfig:"DUMP_PATH" default:"/var/lib/lobby2/nodes.json"` DumpPath string `envconfig:"DUMP_PATH" default:"/var/lib/lobby2/nodes.json"`
ConfigPath string `envconfig:"CONFIG_PATH" default:"/var/lib/lobby2/config.json"` ConfigPath string `envconfig:"CONFIG_PATH" default:"/etc/lobby2/config.json"`
NodeDirPath string `envconfig:"NODE_DIR_PATH" default:"/var/lib/lobby2/node"` NodePath string `envconfig:"NODE_PATH" default:"/etc/lobby2/node.json"`
DropAfterSeconds int64 `envconfig:"DROP_AFTER_SECONDS" default:"60"` DropAfterSeconds int64 `envconfig:"DROP_AFTER_SECONDS" default:"60"`
} }

View file

@ -7,25 +7,24 @@ import (
"log" "log"
"net/http" "net/http"
"os" "os"
"path" "path/filepath"
"time" "time"
"gitea.ceperka.net/rosti/lobby2/nodes" "gitea.ceperka.net/rosti/lobby2/nodes"
) )
const refreshIntervalSeconds = 15 const refreshIntervalSeconds = 15
const nodeFileName = "node.json"
// Refresher loads local node info and sends them to the master node. // Refresher loads local node info and sends them to the master node.
type Refresher struct { type Refresher struct {
configPath string configPath string
nodeDirPath string nodePath string
} }
func NewRefresher(nodeDirPath string, configPath string) *Refresher { func NewRefresher(nodePath string, configPath string) *Refresher {
return &Refresher{ return &Refresher{
nodeDirPath: nodeDirPath, nodePath: nodePath,
configPath: configPath, configPath: configPath,
} }
} }
@ -113,7 +112,7 @@ func (r *Refresher) getConfig() (NodeConfig, error) {
// TODO: rewrite this to load Node structure // TODO: rewrite this to load Node structure
func (r *Refresher) loadNode() (*nodes.Node, error) { func (r *Refresher) loadNode() (*nodes.Node, error) {
filePath := path.Join(r.nodeDirPath, nodeFileName) filePath := r.nodePath
_, err := os.Stat(filePath) _, err := os.Stat(filePath)
if os.IsNotExist(err) { if os.IsNotExist(err) {
err = r.initNodeFile() err = r.initNodeFile()
@ -122,7 +121,7 @@ func (r *Refresher) loadNode() (*nodes.Node, error) {
} }
} }
content, err := os.ReadFile(path.Join(r.nodeDirPath, nodeFileName)) content, err := os.ReadFile(r.nodePath)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to read file: %w", err) return nil, fmt.Errorf("failed to read file: %w", err)
} }
@ -156,7 +155,7 @@ func (r *Refresher) initNodeFile() error {
return fmt.Errorf("failed to marshal node: %w", err) return fmt.Errorf("failed to marshal node: %w", err)
} }
err = os.WriteFile(path.Join(r.nodeDirPath, nodeFileName), nodeBytes, 0640) err = os.WriteFile(r.nodePath, nodeBytes, 0640)
if err != nil { if err != nil {
return fmt.Errorf("failed to write node file: %w", err) return fmt.Errorf("failed to write node file: %w", err)
} }
@ -165,9 +164,11 @@ func (r *Refresher) initNodeFile() error {
} }
func (r *Refresher) createNodePath() error { func (r *Refresher) createNodePath() error {
_, err := os.Stat(r.nodeDirPath) d := filepath.Dir(r.nodePath)
_, err := os.Stat(d)
if os.IsNotExist(err) { if os.IsNotExist(err) {
err = os.MkdirAll(r.nodeDirPath, 0755) err = os.MkdirAll(d, 0755)
if err != nil { if err != nil {
return fmt.Errorf("failed to create node dir: %w", err) return fmt.Errorf("failed to create node dir: %w", err)
} }