package config import ( "os" "gopkg.in/yaml.v3" ) type Config struct { ListenAddr string `yaml:"listen_addr"` TLSCert string `yaml:"tls_cert"` TLSKey string `yaml:"tls_key"` APIKeys []string `yaml:"api_keys"` DBPath string `yaml:"db_path"` } func Load(path string) (*Config, error) { cfg := &Config{ ListenAddr: ":8443", TLSCert: "certs/server.crt", TLSKey: "certs/server.key", DBPath: "rmm.db", } data, err := os.ReadFile(path) if err != nil { return nil, err } if err := yaml.Unmarshal(data, cfg); err != nil { return nil, err } // Env overrides if v := os.Getenv("RMM_LISTEN_ADDR"); v != "" { cfg.ListenAddr = v } if v := os.Getenv("RMM_TLS_CERT"); v != "" { cfg.TLSCert = v } if v := os.Getenv("RMM_TLS_KEY"); v != "" { cfg.TLSKey = v } if v := os.Getenv("RMM_DB_PATH"); v != "" { cfg.DBPath = v } return cfg, nil }