summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-01 20:23:29 +0300
committerPaul Buetow <paul@buetow.org>2026-04-01 20:23:29 +0300
commit3c82415b3b9bca4b376d3044bb677438b17e491e (patch)
tree8e1fd7f9f42b5dadeeb873a2a389c251ae774ccf
parent4f1d809b83c373aa27cd453bd7b3e04ab9719878 (diff)
zg: derive openai voice help from shared list
-rw-r--r--internal/cli/command.go8
-rw-r--r--internal/cli/command_test.go11
2 files changed, 18 insertions, 1 deletions
diff --git a/internal/cli/command.go b/internal/cli/command.go
index 327c869..6416250 100644
--- a/internal/cli/command.go
+++ b/internal/cli/command.go
@@ -5,11 +5,13 @@ import (
"fmt"
"os"
"path/filepath"
+ "strings"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"codeberg.org/snonux/totalrecall/internal"
+ "codeberg.org/snonux/totalrecall/internal/audio"
)
// CreateRootCommand creates and configures the root cobra command
@@ -71,7 +73,7 @@ func setupFlags(cmd *cobra.Command, flags *Flags) {
// OpenAI flags
cmd.Flags().StringVar(&flags.OpenAIModel, "openai-model", flags.OpenAIModel, "OpenAI TTS model: tts-1, tts-1-hd, gpt-4o-mini-tts")
- cmd.Flags().StringVar(&flags.OpenAIVoice, "openai-voice", "", "OpenAI voice: alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse (default: random)")
+ cmd.Flags().StringVar(&flags.OpenAIVoice, "openai-voice", "", openAIVoiceUsage())
cmd.Flags().Float64Var(&flags.OpenAISpeed, "openai-speed", flags.OpenAISpeed, "OpenAI speech speed (0.25 to 4.0, may be ignored by gpt-4o-mini-tts)")
cmd.Flags().StringVar(&flags.OpenAIInstruction, "openai-instruction", "", "Voice instructions for gpt-4o-mini-tts model (e.g., 'speak slowly with a Bulgarian accent')")
@@ -187,3 +189,7 @@ func GetGoogleAPIKey() string {
// Fall back to the legacy key for compatibility with older configs.
return viper.GetString("google.api_key")
}
+
+func openAIVoiceUsage() string {
+ return "OpenAI voice: " + strings.Join(audio.OpenAIVoices, ", ") + " (default: random)"
+}
diff --git a/internal/cli/command_test.go b/internal/cli/command_test.go
index 37e2533..df193fb 100644
--- a/internal/cli/command_test.go
+++ b/internal/cli/command_test.go
@@ -9,6 +9,8 @@ import (
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/viper"
+
+ "codeberg.org/snonux/totalrecall/internal/audio"
)
func TestCreateRootCommand(t *testing.T) {
@@ -113,6 +115,15 @@ func TestSetupFlags(t *testing.T) {
t.Errorf("Expected image-api help to describe CLI Nano Banana support and config fallback, got %q", imageAPIFlag.Usage)
}
+ openAIVoiceFlag := cmd.Flags().Lookup("openai-voice")
+ if openAIVoiceFlag == nil {
+ t.Fatal("openai-voice flag not found")
+ }
+ expectedOpenAIVoiceUsage := "OpenAI voice: " + strings.Join(audio.OpenAIVoices, ", ") + " (default: random)"
+ if openAIVoiceFlag.Usage != expectedOpenAIVoiceUsage {
+ t.Errorf("Expected openai-voice help to derive from shared voice list, got %q", openAIVoiceFlag.Usage)
+ }
+
nanoBananaModelFlag := cmd.Flags().Lookup("nanobanana-model")
if nanoBananaModelFlag == nil {
t.Fatal("nanobanana-model flag not found")