package config import ( "os" "strings" ) type Config struct { Port string // GITEA_MCP_PORT, default 8080 GiteaBaseURL string // GITEA_BASE_URL, e.g. https://gitea.d-ma.be GiteaAPIToken string // GITEA_API_TOKEN — bot user token AllowedOwners []string // GITEA_MCP_ALLOWED_OWNERS, comma-separated, default "mathias" OriginAllowlist []string // GITEA_MCP_ORIGIN_ALLOWLIST, comma-separated } func Load() (Config, error) { cfg := Config{ Port: envOr("GITEA_MCP_PORT", "8080"), GiteaBaseURL: os.Getenv("GITEA_BASE_URL"), GiteaAPIToken: os.Getenv("GITEA_API_TOKEN"), AllowedOwners: splitCSV(envOr("GITEA_MCP_ALLOWED_OWNERS", "mathias")), OriginAllowlist: splitCSV(os.Getenv("GITEA_MCP_ORIGIN_ALLOWLIST")), } return cfg, nil } func envOr(key, def string) string { if v := os.Getenv(key); v != "" { return v } return def } func splitCSV(s string) []string { if s == "" { return nil } parts := strings.Split(s, ",") out := make([]string, 0, len(parts)) for _, p := range parts { if p = strings.TrimSpace(p); p != "" { out = append(out, p) } } return out }