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