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;