summaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-06 10:16:14 +0300
committerPaul Buetow <paul@buetow.org>2026-04-06 10:16:14 +0300
commit05bddac137607102f12c1c464db34a1e10707af6 (patch)
tree4b7b74102f78e146b17c1e73370bb0bf4c42a11a /internal/cli
parent51a8eaf8b759d6ef93c93b3e5430954959ea2aad (diff)
refactor: decompose Processor god object into focused files (SRP)
Extract audio coordination (voice selection, config assembly, attribution writing) into audio_coordinator.go, card directory management into card_store.go, and image downloading/searcher construction into image_downloader.go. processor.go shrinks from ~1119 to ~575 lines, each file now has a single clear responsibility. Also apply go fmt to all touched files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/flags.go36
1 files changed, 18 insertions, 18 deletions
diff --git a/internal/cli/flags.go b/internal/cli/flags.go
index 9c83138..df493a4 100644
--- a/internal/cli/flags.go
+++ b/internal/cli/flags.go
@@ -16,25 +16,25 @@ type Flags struct {
// AudioFormatSpecified records whether the audio format was explicitly set on the CLI.
AudioFormatSpecified bool
// AudioProvider selects the text-to-speech backend ("gemini" or "openai").
- AudioProvider string
- ImageAPI string
- ImageAPISpecified bool
- BatchFile string
- StoryFile string // --story <file>: generate vocabulary story + comic image
- StoryStyle string // --story-style: override the random art style (empty = random)
- StoryTheme string // --story-theme: override the random genre pick (empty = random)
+ AudioProvider string
+ ImageAPI string
+ ImageAPISpecified bool
+ BatchFile string
+ StoryFile string // --story <file>: generate vocabulary story + comic image
+ StoryStyle string // --story-style: override the random art style (empty = random)
+ StoryTheme string // --story-theme: override the random genre pick (empty = random)
StoryNoUltraRealistic bool // --no-ultra-realistic: disable photorealistic rendering requirement
- StorySlug string // --story-slug: force a specific output slug/directory (empty = auto from title)
- NarratorVoice string // --narrator-voice: Gemini voice for cinematic narration (empty = random)
- SkipAudio bool
- SkipImages bool
- GenerateAnki bool
- AnkiCSV bool
- DeckName string
- ListModels bool
- AllVoices bool
- NoAutoPlay bool
- Archive bool
+ StorySlug string // --story-slug: force a specific output slug/directory (empty = auto from title)
+ NarratorVoice string // --narrator-voice: Gemini voice for cinematic narration (empty = random)
+ SkipAudio bool
+ SkipImages bool
+ GenerateAnki bool
+ AnkiCSV bool
+ DeckName string
+ ListModels bool
+ AllVoices bool
+ NoAutoPlay bool
+ Archive bool
// OpenAI flags
OpenAIModel string