config: add load/save config file

This commit is contained in:
Artem
2024-11-04 20:28:18 +01:00
parent df0b972ab4
commit 7394151491
3 changed files with 44 additions and 1 deletions

View File

@@ -12,8 +12,16 @@ import (
log "github.com/sirupsen/logrus"
)
const ConfigFile = "/etc/rkkvm/rkkvm.yml"
func main() {
config.Init()
if err := config.Load(ConfigFile); err != nil {
config.Init()
if err = config.Save(ConfigFile); err != nil {
log.Error(err)
}
}
cfg := config.Get()
lvl, err := log.ParseLevel(cfg.LogLevel)
if err == nil {

View File

@@ -2,7 +2,10 @@ package config
import (
"fmt"
"os"
"strings"
"gopkg.in/yaml.v3"
)
type Config struct {
@@ -107,3 +110,34 @@ func Init() {
NanoKVMUISupport: true,
}
}
func Load(fname string) error {
yamlData, err := os.ReadFile(fname)
if err != nil {
return fmt.Errorf("config: couldn't read config file: %w", err)
}
var cfg Config
err = yaml.Unmarshal(yamlData, &cfg)
if err != nil {
return fmt.Errorf("config: couldn't parse config file: %w", err)
}
c = cfg
return nil
}
func Save(fname string) error {
data, err := yaml.Marshal(c)
if err != nil {
return fmt.Errorf("config: failed to marshal config: %w", err)
}
err = os.WriteFile(fname, data, 0o660)
if err != nil {
return fmt.Errorf("config: failed to write config: %w", err)
}
return nil
}

View File

@@ -8,6 +8,7 @@ services:
- /sys/kernel/config:/sys/kernel/config
- ./test_data:/data
- /dev:/dev # required, if you will use Mass-Storage-Device
- ./test_data/config:/etc/rkkvm
#devices:
#- /dev/hidg0
#- /dev/hidg1