Skip to main content

Config

Struct Config 

Source
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: bool

Allow custom credentialed endpoints (JOE-1587).

§openrouter_stt_mode: String

auto | chat | transcriptions (JOE-1586).

§openrouter_use_system_proxy: bool§cleanup_style: String

Cleanup style name (raw, clean, …).

§cleanup_provider: String

Cleanup backend name (rules, openrouter).

§cleanup_openrouter_model: Option<String>

Optional dedicated model for OpenRouter cleanup.

§tts_provider: String

TTS 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: PathBuf

Implementations§

Source§

impl Config

Source

pub fn default_config_path() -> Option<PathBuf>

Resolve the platform-appropriate config file path.

Source

pub fn default_cache_dir() -> Result<PathBuf>

Resolve the platform-appropriate cache directory (models live under models/).

Source

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).

Source

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.

Source

pub fn load_from_required(path: &Path) -> Result<Self>

Load from an explicit path; error if the file is missing (JOE-1608).

Source

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.

Source

pub fn validate(&self) -> Result<()>

Validate provider/model/style/limit cross-fields (JOE-1608).

Source

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.

Source

pub fn effective_diagnostic(&self) -> EffectiveConfigDiagnostic

Redacted diagnostic view for --print-effective-config (JOE-1608).

Source

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.

Source

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§

Source§

impl AsRef<Config> for ValidatedConfig

Source§

fn as_ref(&self) -> &Config

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more