cuenv_core/config/
mod.rs

1//! Configuration types for cuenv
2//!
3//! Based on schema/config.cue
4
5use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7
8/// Main configuration structure for cuenv
9#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Default)]
10#[serde(rename_all = "camelCase")]
11pub struct Config {
12    /// Task output format
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub output_format: Option<OutputFormat>,
15
16    /// Cache configuration
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub cache_mode: Option<CacheMode>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub cache_enabled: Option<bool>,
22
23    /// Security and debugging
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub audit_mode: Option<bool>,
26
27    /// Chrome trace generation
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub trace_output: Option<bool>,
30
31    /// Default environment settings
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub default_environment: Option<String>,
34
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub default_capabilities: Option<Vec<String>>,
37}
38
39/// Task output format options
40#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
41#[serde(rename_all = "lowercase")]
42pub enum OutputFormat {
43    Tui,
44    Spinner,
45    Simple,
46    Tree,
47    Json,
48}
49
50/// Cache mode options
51#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
52#[serde(rename_all = "kebab-case")]
53pub enum CacheMode {
54    Off,
55    Read,
56    ReadWrite,
57    Write,
58}