From 05bddac137607102f12c1c464db34a1e10707af6 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 6 Apr 2026 10:16:14 +0300 Subject: 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 --- internal/cli/flags.go | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'internal/cli') 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 : 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 : 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 -- cgit v1.2.3