feat(config): Ansage-Label wrap.label mit Env-Override TALK_WRAP_LABEL

Config-Schlüssel [wrap] label für talk wrap (Task 07): ersetzt den
Basisnamen des Befehls in der Ansage („Deployment erfolgreich. Dauer: …“
statt „terraform erfolgreich. …“). Auflösung wie üblich Defaults →
config.toml → Env (TALK_WRAP_LABEL schlägt die Datei); Tisch-Tests für
alle drei Schichten.
This commit is contained in:
m3ta-chiron committed 2026-10-18 20:46:39 +02:00
1 parent 30bd535400
commit a3424c36e5
2 files changed
+67

No files matched your search

+15
View File
@@ -61,6 +61,9 @@ type Config struct {
// eingebauten neutralen Defaults; das CLI-Flag --voice schlägt alles.
Voice map[string]map[string]string `toml:"voice"`
// Wrap steuert die Befehlsummwicklung `talk wrap` (Task 07).
Wrap Wrap `toml:"wrap"`
// QuietHours ist das Ruhezeit-Fenster "HH:MM-HH:MM" in lokaler Zeit
// (überspannt Mitternacht, z. B. "18:00-08:00"); leer = deaktiviert.
// Bewusst kein Default-Fenster: Ein aktives Gesetz, das nach Uhrzeit
@@ -96,6 +99,15 @@ type Server struct {
AllowedOrigins []string `toml:"allowed_origins"`
}
// Wrap sind die Einstellungen von `talk wrap` (TOML `[wrap]`).
type Wrap struct {
// Label ersetzt den Basisnamen des Befehls in der Ansage — z. B.
// `label = "Deployment"` für „Deployment erfolgreich. Dauer: …"
// statt „terraform erfolgreich. Dauer: …" (Env-Override
// TALK_WRAP_LABEL schlägt die Datei).
Label string `toml:"label"`
}
// Queue sind die Rate-Limit-Gesetze des Daemons (TOML `[queue]`).
type Queue struct {
// RateLimit ist der Mindestabstand zwischen zwei Ansage-Starten als
@@ -198,6 +210,9 @@ func applyEnv(cfg Config, getenv func(string) string) (Config, error) {
cfg.Server.AllowedOrigins = origins
}
}
if v := getenv("TALK_WRAP_LABEL"); v != "" {
cfg.Wrap.Label = v
}
if v := getenv("TALK_RATE_LIMIT"); v != "" {
d, err := time.ParseDuration(v)
if err != nil || d < 0 {