package config import ( "os" "gopkg.in/yaml.v3" ) type Config struct { Server ServerConfig `yaml:"server"` Database DatabaseConfig `yaml:"database"` Auth AuthConfig `yaml:"auth"` } type ServerConfig struct { Listen string `yaml:"listen"` } type DatabaseConfig struct { Path string `yaml:"path"` } type AuthConfig struct { DaemonAPIKey string `yaml:"daemon_api_key"` DashboardToken string `yaml:"dashboard_token"` } func DefaultConfig() *Config { return &Config{ Server: ServerConfig{ Listen: ":8080", }, Database: DatabaseConfig{ Path: "ccrm.db", }, Auth: AuthConfig{ DaemonAPIKey: "change-me-daemon-key", DashboardToken: "change-me-dashboard-token", }, } } func Load(path string) (*Config, error) { cfg := DefaultConfig() if path == "" { return cfg, nil } data, err := os.ReadFile(path) if err != nil { if os.IsNotExist(err) { return cfg, nil } return nil, err } if err := yaml.Unmarshal(data, cfg); err != nil { return nil, err } return cfg, nil }