From 13c2f9cffa624fdf498f3b61fab9d809b92e026e Mon Sep 17 00:00:00 2001 From: bndw Date: Sun, 28 Dec 2025 09:21:08 -0800 Subject: init --- internal/config/config.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 internal/config/config.go (limited to 'internal/config/config.go') diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..8651aa8 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,65 @@ +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") +} -- cgit v1.2.3