Go-Projekt und Cobra/Viper-CLI grundlegend aufsetzen #2

Closed
opened 2026-07-17 09:05:48 +02:00 by frank · 1 comment
Owner

Teil von #1.

Ziel

Ein idiomatisches Go-Projekt mit einem Binary und zwei klaren Betriebsmodi als Cobra-Subcommands.

Scope

  • Go-Modul und Paketstruktur anlegen.
  • Root-Command mit SPF13/Cobra.
  • Subcommands:
    • mcp-server
    • private-proxy
    • version
  • SPF13/Viper als zentrale, explizit instanziierte Konfiguration verwenden; keine globale Viper-Instanz in Fachpaketen.
  • Konfigurationsquellen in dieser Priorität: Flags vor Environment vor Konfigurationsdatei vor Defaults.
  • Config-Datei über --config explizit auswählbar; ein fehlender expliziter Pfad ist ein Fehler, eine nicht vorhandene optionale Default-Datei nicht.
  • Environment-Präfix PRIVATE_PROXY_MCP und Mapping verschachtelter Keys auf SCREAMING_SNAKE_CASE.
  • Sichere Secret-Eingabe: Shared Keys nie in Logs oder Fehlertexten ausgeben.
  • Default-Adressen:
    • MCP: 127.0.0.1:9334
    • Reverse Connector Listener: 0.0.0.0:9335
  • Alle Adressen und Ports über Flag, Environment und Datei überschreibbar.
  • --help zeigt effektive Defaults; version gibt Build-Version, Commit und Build-Zeit aus.
  • main bleibt dünn; Cobra-Commands geben Fehler über RunE zurück.

Akzeptanzkriterien

  • go test ./... läuft erfolgreich.
  • Beide Subcommands starten mit Default-Konfiguration und reagieren sauber auf SIGINT/SIGTERM.
  • Unit-Tests belegen Viper-Priorität und die Defaults 9334/9335.
  • Ungültige Ports, Adressen, Dauerwerte oder fehlende Pflicht-Secrets werden vor dem Serverstart mit verständlicher Meldung abgelehnt.
  • Beispielkonfiguration ohne echte Secrets liegt im Repository.
  • Secret-Werte erscheinen weder in --help noch in Logs.

Referenzen

Teil von #1. ## Ziel Ein idiomatisches Go-Projekt mit einem Binary und zwei klaren Betriebsmodi als Cobra-Subcommands. ## Scope - Go-Modul und Paketstruktur anlegen. - Root-Command mit SPF13/Cobra. - Subcommands: - mcp-server - private-proxy - version - SPF13/Viper als zentrale, explizit instanziierte Konfiguration verwenden; keine globale Viper-Instanz in Fachpaketen. - Konfigurationsquellen in dieser Priorität: Flags vor Environment vor Konfigurationsdatei vor Defaults. - Config-Datei über --config explizit auswählbar; ein fehlender expliziter Pfad ist ein Fehler, eine nicht vorhandene optionale Default-Datei nicht. - Environment-Präfix PRIVATE_PROXY_MCP und Mapping verschachtelter Keys auf SCREAMING_SNAKE_CASE. - Sichere Secret-Eingabe: Shared Keys nie in Logs oder Fehlertexten ausgeben. - Default-Adressen: - MCP: 127.0.0.1:9334 - Reverse Connector Listener: 0.0.0.0:9335 - Alle Adressen und Ports über Flag, Environment und Datei überschreibbar. - --help zeigt effektive Defaults; version gibt Build-Version, Commit und Build-Zeit aus. - main bleibt dünn; Cobra-Commands geben Fehler über RunE zurück. ## Akzeptanzkriterien - go test ./... läuft erfolgreich. - Beide Subcommands starten mit Default-Konfiguration und reagieren sauber auf SIGINT/SIGTERM. - Unit-Tests belegen Viper-Priorität und die Defaults 9334/9335. - Ungültige Ports, Adressen, Dauerwerte oder fehlende Pflicht-Secrets werden vor dem Serverstart mit verständlicher Meldung abgelehnt. - Beispielkonfiguration ohne echte Secrets liegt im Repository. - Secret-Werte erscheinen weder in --help noch in Logs. ## Referenzen - Cobra User Guide: https://github.com/spf13/cobra/blob/main/site/content/user_guide.md - Viper README und Priorität: https://github.com/spf13/viper - Viper unterstützt pflag/Cobra-Bindings: https://pkg.go.dev/github.com/spf13/viper
Author
Owner

🤖 forge agent started

  • Agent: codex
  • Model: gpt-5.6-sol
  • Mode: pr
  • Trigger: assignee=agent|+5 mapped

Go-Projekt und Cobra/Viper-CLI grundlegend aufsetzen — Teil von #1.

🤖 **forge agent started** - Agent: `codex` - Model: `gpt-5.6-sol` - Mode: `pr` - Trigger: `assignee=agent|+5 mapped` Go-Projekt und Cobra/Viper-CLI grundlegend aufsetzen — Teil von #1.
frank 2026-07-17 09:42:20 +02:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
ai-tools/private-proxy-mcp#2
No description provided.