diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-06 10:16:14 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-06 10:16:14 +0300 |
| commit | 05bddac137607102f12c1c464db34a1e10707af6 (patch) | |
| tree | 4b7b74102f78e146b17c1e73370bb0bf4c42a11a /internal/cli | |
| parent | 51a8eaf8b759d6ef93c93b3e5430954959ea2aad (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.go | 36 |
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 |
