pub struct Config {Show 27 fields
pub provider: String,
pub model: Option<String>,
pub language: String,
pub output: String,
pub output_file: Option<PathBuf>,
pub timestamps: bool,
pub verbose: bool,
pub openrouter_api_key: Option<SecretString>,
pub openrouter_base_url: String,
pub openrouter_default_model: String,
pub openrouter_allow_custom_endpoint: bool,
pub openrouter_stt_mode: String,
pub openrouter_use_system_proxy: bool,
pub cleanup_style: String,
pub cleanup_provider: String,
pub cleanup_openrouter_model: Option<String>,
pub tts_provider: String,
pub tts_model: String,
pub tts_voice: String,
pub tts_language: String,
pub tts_max_chars: usize,
pub tts_timeout_ms: u64,
pub tts_pack_dir: Option<PathBuf>,
pub tts_allow_unverified: bool,
pub tts_custom_models: Vec<CustomTtsModelConfig>,
pub config_path: Option<PathBuf>,
pub cache_dir: PathBuf,
}Expand description
Fully-resolved runtime configuration after merging all sources.
Fields§
§provider: String§model: Option<String>§language: String§output: String§output_file: Option<PathBuf>§timestamps: bool§verbose: bool§openrouter_api_key: Option<SecretString>Remote API key — redacted via crate::secret::SecretString Debug/Display (JOE-1779).
openrouter_base_url: String§openrouter_default_model: String§openrouter_allow_custom_endpoint: boolAllow custom credentialed endpoints (JOE-1587).
openrouter_stt_mode: Stringauto | chat | transcriptions (JOE-1586).
openrouter_use_system_proxy: bool§cleanup_style: StringCleanup style name (raw, clean, …).
cleanup_provider: StringCleanup backend name (rules, openrouter).
cleanup_openrouter_model: Option<String>Optional dedicated model for OpenRouter cleanup.
tts_provider: StringTTS provider name (local only in MVP).
tts_model: String§tts_voice: String§tts_language: String§tts_max_chars: usize§tts_timeout_ms: u64§tts_pack_dir: Option<PathBuf>Optional default pack directory for local override (JOE-1619).
tts_allow_unverified: bool§tts_custom_models: Vec<CustomTtsModelConfig>Validated custom TTS catalogue entries (empty when packs not present yet).
config_path: Option<PathBuf>§cache_dir: PathBufImplementations§
Source§impl Config
impl Config
Sourcepub fn default_config_path() -> Option<PathBuf>
pub fn default_config_path() -> Option<PathBuf>
Resolve the platform-appropriate config file path.
Sourcepub fn default_cache_dir() -> Result<PathBuf>
pub fn default_cache_dir() -> Result<PathBuf>
Resolve the platform-appropriate cache directory (models live under models/).
Sourcepub fn load() -> Result<Self>
pub fn load() -> Result<Self>
Load config file from the default location (if present) and merge with env vars.
Always validates [[tts.custom_models]] so reserved/builtin IDs cannot
silently shadow the catalogue (JOE-1576/1620).
Sourcepub fn load_from(path: &Path) -> Result<Self>
pub fn load_from(path: &Path) -> Result<Self>
Load from an explicit config file path (used in tests / CLI --config).
When the path does not exist, returns defaults (historical behavior).
Prefer Self::load_from_required when a missing file must be an error.
Validates custom TTS catalogue entries when present.
Sourcepub fn load_from_required(path: &Path) -> Result<Self>
pub fn load_from_required(path: &Path) -> Result<Self>
Load from an explicit path; error if the file is missing (JOE-1608).
Sourcepub fn openrouter_api_key_exposed(&self) -> Option<String>
pub fn openrouter_api_key_exposed(&self) -> Option<String>
Expose the OpenRouter API key as a plain string for provider construction. Prefer not logging the return value.
Sourcepub fn validate(&self) -> Result<()>
pub fn validate(&self) -> Result<()>
Validate provider/model/style/limit cross-fields (JOE-1608).
Sourcepub fn validate_tts_custom_models(&self) -> Result<()>
pub fn validate_tts_custom_models(&self) -> Result<()>
Validate [[tts.custom_models]] uniqueness and reserved namespaces.
Full pack verification runs when pack_dir paths exist on disk.
Sourcepub fn effective_diagnostic(&self) -> EffectiveConfigDiagnostic
pub fn effective_diagnostic(&self) -> EffectiveConfigDiagnostic
Redacted diagnostic view for --print-effective-config (JOE-1608).
Sourcepub fn apply_cli(
&mut self,
provider: Option<&str>,
model: Option<&str>,
language: Option<&str>,
output: Option<&str>,
output_file: Option<&Path>,
timestamps: bool,
verbose: bool,
cleanup: Option<&str>,
cleanup_provider: Option<&str>,
cleanup_model: Option<&str>,
)
pub fn apply_cli( &mut self, provider: Option<&str>, model: Option<&str>, language: Option<&str>, output: Option<&str>, output_file: Option<&Path>, timestamps: bool, verbose: bool, cleanup: Option<&str>, cleanup_provider: Option<&str>, cleanup_model: Option<&str>, )
Apply CLI overrides on top of the loaded config.
Sourcepub fn resolve_model(&self, model_explicitly_set: bool) -> Result<String>
pub fn resolve_model(&self, model_explicitly_set: bool) -> Result<String>
Resolve the effective model for the active provider.
When model_explicitly_set is false and the provider is openrouter, a bare
local whisper name (e.g. config default base) is replaced with the
openrouter default model id.
Resolve model for the active provider.
Returns Err if OpenRouter is selected with an explicit bare local whisper name
(e.g. --provider openrouter --model tiny) — that cannot be a remote model id.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more