aperture_cli/config/
models.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct GlobalConfig {
6 #[serde(default = "default_timeout_secs_value")]
7 pub default_timeout_secs: u64,
8 #[serde(default)]
9 pub agent_defaults: AgentDefaults,
10 #[serde(default)]
12 pub api_configs: HashMap<String, ApiConfig>,
13}
14
15const fn default_timeout_secs_value() -> u64 {
16 30
17}
18
19#[derive(Debug, Clone, Deserialize, Serialize, Default)]
20pub struct AgentDefaults {
21 #[serde(default)]
22 pub json_errors: bool,
23}
24
25impl Default for GlobalConfig {
26 fn default() -> Self {
27 Self {
28 default_timeout_secs: 30,
29 agent_defaults: AgentDefaults::default(),
30 api_configs: HashMap::new(),
31 }
32 }
33}
34
35#[derive(Debug, Deserialize, Serialize, Clone)]
37pub struct ApiConfig {
38 pub base_url_override: Option<String>,
40 #[serde(default)]
42 pub environment_urls: HashMap<String, String>,
43 #[serde(default)]
45 pub strict_mode: bool,
46 #[serde(default)]
48 pub secrets: HashMap<String, ApertureSecret>,
49}
50
51#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)]
52#[serde(rename_all = "camelCase")]
53pub struct ApertureSecret {
54 pub source: SecretSource,
55 pub name: String,
56}
57
58#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)]
59#[serde(rename_all = "camelCase")]
60pub enum SecretSource {
61 Env,
62 }