raz_config/
lib.rs

1#![doc = include_str!("../README.md")]
2
3pub mod builder;
4pub mod effective;
5pub mod error;
6pub mod global;
7pub mod hierarchy;
8pub mod migration;
9pub mod override_config;
10pub mod schema;
11pub mod templates;
12pub mod validation;
13pub mod workspace;
14
15pub use templates::ConfigTemplates;
16
17pub use builder::{CommandConfigBuilder, ConfigBuilder, OverrideBuilder};
18pub use effective::EffectiveConfig;
19pub use error::{ConfigError, Result};
20pub use global::GlobalConfig;
21pub use hierarchy::{ConfigHierarchy, ConfigLevel, ConfigLocation};
22pub use migration::ConfigMigrator;
23pub use override_config::{CommandOverride, OverrideMode, OverrideSettings};
24pub use schema::{ConfigSchema, ConfigVersion};
25pub use validation::ConfigValidator;
26pub use workspace::WorkspaceConfig;
27
28use serde::{Deserialize, Serialize};
29use std::path::PathBuf;
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct RazConfig {
33    pub version: ConfigVersion,
34    pub enabled: bool,
35    pub providers: Vec<String>,
36    pub cache_dir: Option<PathBuf>,
37    pub cache_ttl: Option<u64>,
38    pub parallel_execution: Option<bool>,
39    pub max_concurrent_jobs: Option<usize>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize, Default)]
43pub struct ProviderConfig {
44    pub cargo: Option<toml::Value>,
45    pub rustc: Option<toml::Value>,
46    pub leptos: Option<toml::Value>,
47    pub dioxus: Option<toml::Value>,
48    pub bevy: Option<toml::Value>,
49    pub custom: Option<toml::Value>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct FilterConfig {
54    pub priority_commands: Vec<String>,
55    pub ignore_commands: Vec<String>,
56    pub auto_fix: Option<bool>,
57    pub show_warnings: Option<bool>,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct UiConfig {
62    pub color: Option<bool>,
63    pub progress: Option<bool>,
64    pub verbose: Option<bool>,
65    pub format: Option<String>,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
69pub struct CommandConfig {
70    pub name: String,
71    pub command: String,
72    pub args: Vec<String>,
73    pub env: Option<indexmap::IndexMap<String, String>>,
74    pub working_dir: Option<PathBuf>,
75    pub description: Option<String>,
76}
77
78pub const GLOBAL_CONFIG_PATH: &str = "~/.config/raz/config.toml";
79pub const WORKSPACE_CONFIG_FILENAME: &str = ".raz/config.toml";
80pub const CONFIG_CURRENT_VERSION: u32 = 1;