Skip to main content

nils_common/provider_runtime/
config.rs

1use std::path::PathBuf;
2
3use crate::env as shared_env;
4
5use super::paths;
6use super::profile::ProviderProfile;
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct RuntimeConfig {
10    pub model: String,
11    pub reasoning: String,
12    pub allow_dangerous_enabled_raw: String,
13    pub secret_dir: Option<PathBuf>,
14    pub auth_file: Option<PathBuf>,
15    pub secret_cache_dir: Option<PathBuf>,
16    pub starship_enabled: String,
17    pub auto_refresh_enabled: String,
18    pub auto_refresh_min_days: String,
19}
20
21pub fn snapshot(profile: &ProviderProfile) -> RuntimeConfig {
22    RuntimeConfig {
23        model: shared_env::env_or_default(profile.env.model, profile.defaults.model),
24        reasoning: shared_env::env_or_default(profile.env.reasoning, profile.defaults.reasoning),
25        allow_dangerous_enabled_raw: std::env::var(profile.env.allow_dangerous_enabled)
26            .unwrap_or_default(),
27        secret_dir: paths::resolve_secret_dir(profile),
28        auth_file: paths::resolve_auth_file(profile),
29        secret_cache_dir: paths::resolve_secret_cache_dir(profile),
30        starship_enabled: shared_env::env_or_default(
31            profile.env.starship_enabled,
32            profile.defaults.starship_enabled,
33        ),
34        auto_refresh_enabled: shared_env::env_or_default(
35            profile.env.auto_refresh_enabled,
36            profile.defaults.auto_refresh_enabled,
37        ),
38        auto_refresh_min_days: shared_env::env_or_default(
39            profile.env.auto_refresh_min_days,
40            profile.defaults.auto_refresh_min_days,
41        ),
42    }
43}