diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-03 08:03:05 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-03 08:03:05 +0300 |
| commit | 63bd86d8046949e80e5b1122a1fcf717f51915c6 (patch) | |
| tree | 10bc72c97d1ba597bc82fb273987716eabf2e989 /internal/gui/generator.go | |
| parent | 5a1a6b863c3adaa8ec9d087ba130f7676fc9575b (diff) | |
tasks 00d, 006, 007: move test seams to struct fields, centralize Viper config, extract shared card-dir logic
task 00d: remove package-level var test seams from processor and gui packages;
factory functions (newAudioProvider, newOpenAIImageClient, newNanoBananaImageClient)
are now struct fields on Processor and Application, initialized with production
defaults in constructors and replaced in tests without global mutation.
task 006: add viperConfig struct captured once in NewProcessor; no method body
calls viper.GetString/IsSet/GetFloat64 directly any more — all config-file values
are accessed via p.viperCfg fields.
task 007: extract FindCardDirectory and FindOrCreateCardDirectory into
internal/utils.go; both Processor.findCardDirectory and
Application.findCardDirectory now delegate to the shared implementation,
which also handles the legacy _word.txt backward-compat fallback.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/gui/generator.go')
| -rw-r--r-- | internal/gui/generator.go | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/internal/gui/generator.go b/internal/gui/generator.go index 4763149..4b55608 100644 --- a/internal/gui/generator.go +++ b/internal/gui/generator.go @@ -22,16 +22,6 @@ type promptAwareImageClient interface { SetPromptCallback(func(prompt string)) } -var newOpenAIImageClient = func(config *image.OpenAIConfig) promptAwareImageClient { - return image.NewOpenAIClient(config) -} - -var newNanoBananaImageClient = func(config *image.NanoBananaConfig) promptAwareImageClient { - return image.NewNanoBananaClient(config) -} - -var newAudioProvider = audio.NewProvider - func randomVoice(voices []string) string { rng := rand.New(rand.NewSource(time.Now().UnixNano())) return voices[rng.Intn(len(voices))] @@ -123,7 +113,7 @@ func (a *Application) audioConfigForGeneration(voice string, speed float64) audi func (a *Application) generateAudioFile(ctx context.Context, text, outputFile, voice string, speed float64) error { audioConfig := a.audioConfigForGeneration(voice, speed) - provider, err := newAudioProvider(&audioConfig) + provider, err := a.newAudioProvider(&audioConfig) if err != nil { return err } @@ -410,7 +400,7 @@ func (a *Application) newImageSearcher() (promptAwareImageClient, error) { Style: "natural", } - return newOpenAIImageClient(openaiConfig), nil + return a.newOpenAIImageClient(openaiConfig), nil case imageProviderNanoBanana: config := a.config if config == nil { @@ -426,7 +416,7 @@ func (a *Application) newImageSearcher() (promptAwareImageClient, error) { TextModel: config.NanoBananaTextModel, } - return newNanoBananaImageClient(nanoBananaConfig), nil + return a.newNanoBananaImageClient(nanoBananaConfig), nil default: return nil, fmt.Errorf("unknown image provider: %s", a.config.ImageProvider) } |
