feat(cmd/ry): add simplified single-provider config

This commit is contained in:
2026-08-13 00:37:15 +08:00
parent 499b4789fb
commit b15e78fd4d
2 changed files with 144 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
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")
}