Files
BrowserOS/packages/browseros-agent/apps/cli/config/config.go
Dani Akash 290ee91a8b Add 'packages/browseros-agent/' from commit '90bd4be3008285bf3825aad3702aff98f872671a'
git-subtree-dir: packages/browseros-agent
git-subtree-mainline: 8f148d0918
git-subtree-split: 90bd4be300
2026-03-13 21:22:09 +05:30

54 lines
1.0 KiB
Go

package config
import (
"fmt"
"os"
"path/filepath"
"gopkg.in/yaml.v3"
)
type Config struct {
ServerURL string `yaml:"server_url"`
}
func Dir() string {
if xdg := os.Getenv("XDG_CONFIG_HOME"); xdg != "" {
return filepath.Join(xdg, "browseros-cli")
}
home, _ := os.UserHomeDir()
return filepath.Join(home, ".config", "browseros-cli")
}
func Path() string {
return filepath.Join(Dir(), "config.yaml")
}
func Load() (*Config, error) {
data, err := os.ReadFile(Path())
if err != nil {
if os.IsNotExist(err) {
return &Config{}, nil
}
return nil, err
}
var cfg Config
if err := yaml.Unmarshal(data, &cfg); err != nil {
return nil, fmt.Errorf("parsing config: %w", err)
}
return &cfg, nil
}
func Save(cfg *Config) error {
dir := Dir()
if err := os.MkdirAll(dir, 0755); err != nil {
return err
}
data, err := yaml.Marshal(cfg)
if err != nil {
return err
}
header := "# browseros-cli configuration\n# Run: browseros-cli config --path\n\n"
return os.WriteFile(Path(), []byte(header+string(data)), 0644)
}