package config import ( "os" "path/filepath" "github.com/BurntSushi/toml" ) type Config struct { APIKey string `toml:"api_key,omitempty"` Output string `toml:"output"` } func Load(path string) (*Config, error) { cfg := &Config{Output: "table"} data, err := os.ReadFile(path) if err != nil { if os.IsNotExist(err) { return cfg, nil } return nil, err } if err := toml.Unmarshal(data, cfg); err != nil { return nil, err } if cfg.Output == "" { cfg.Output = "table" } return cfg, nil } func Save(path string, cfg *Config) error { dir := filepath.Dir(path) if err := os.MkdirAll(dir, 0700); err != nil { return err } f, err := os.Create(path) if err != nil { return err } defer f.Close() enc := toml.NewEncoder(f) return enc.Encode(cfg) } func DefaultPath() string { home, err := os.UserHomeDir() if err != nil { return "config.toml" } return filepath.Join(home, ".config", "ry", "config.toml") }