begin writing config parsing

This commit is contained in:
mykola2312 2024-12-27 12:47:33 +02:00
parent c8bc8897b1
commit f1a6c65ef5
6 changed files with 82 additions and 0 deletions

24
.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# Go workspace file
go.work
go.work.sum
run/

View file

@ -54,3 +54,9 @@ Host's state consists of:
Node's state is table of hosts' states + their last heartbeat time.
Node state must also include generation ID, which must be guaranteed to be unique in scope of last 128 generations.
A new generation should only happen when any of the hosts has new heartbeat.
## Software architecture
- Config are INI files.
- Daemon, that constantly runs and serves protocol. Also provides UNIX socket for cli configuration
- CLI to communicate with UNIX socket and issue commands

27
conf/config.go Normal file
View file

@ -0,0 +1,27 @@
package conf
import "gopkg.in/ini.v1"
type LuxConnection struct {
Bind string `ini:"bind"`
Port int `ini:"port"`
}
type LuxConfig struct {
Exterior LuxConnection `ini:"exterior"`
Interior LuxConnection `ini:"interior"`
Mode string `ini:"mode"`
}
func (conf *LuxConfig) ParseConfig(path string) error {
ini, err := ini.Load(path)
if err != nil {
return err
}
if err = ini.MapTo(conf); err != nil {
return err
}
return nil
}

5
go.mod Normal file
View file

@ -0,0 +1,5 @@
module lux
go 1.23.4
require gopkg.in/ini.v1 v1.67.0 // indirect

2
go.sum Normal file
View file

@ -0,0 +1,2 @@
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=

18
main.go Normal file
View file

@ -0,0 +1,18 @@
package main
import (
"fmt"
"log"
"lux/conf"
)
var config *conf.LuxConfig = &conf.LuxConfig{}
func main() {
err := config.ParseConfig("run/etc/lux.conf")
if err != nil {
log.Fatal(err)
}
fmt.Println(config)
}