package config import ( "bufio" "os" "path/filepath" "strings" ) // Config represents the user's configuration type Config struct { Host string } // Load reads config from ~/.config/deploy/config func Load() (*Config, error) { path := configPath() // If file doesn't exist, return empty config if _, err := os.Stat(path); os.IsNotExist(err) { return &Config{}, nil } file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() cfg := &Config{} scanner := bufio.NewScanner(file) for scanner.Scan() { line := strings.TrimSpace(scanner.Text()) if line == "" || strings.HasPrefix(line, "#") { continue } parts := strings.SplitN(line, ":", 2) if len(parts) != 2 { continue } key := strings.TrimSpace(parts[0]) value := strings.TrimSpace(parts[1]) switch key { case "host": cfg.Host = value } } if err := scanner.Err(); err != nil { return nil, err } return cfg, nil } func configPath() string { home, err := os.UserHomeDir() if err != nil { return ".deploy-config" } return filepath.Join(home, ".config", "deploy", "config") }