raz_override/
lib.rs

1#![doc = include_str!("../README.md")]
2
3pub mod backup;
4pub mod cli;
5pub mod detector;
6pub mod error;
7pub mod inspector;
8pub mod key;
9pub mod migration;
10pub mod parser;
11pub mod preview;
12pub mod resolver;
13pub mod storage;
14pub mod system;
15
16pub use backup::{BackupInfo, BackupManager};
17pub use cli::OverrideCli;
18pub use detector::{FunctionDetector, FunctionInfo};
19pub use error::{OverrideError, Result};
20pub use inspector::OverrideInspector;
21pub use key::{FunctionContext, OverrideKey};
22pub use migration::{MigrationReport, OverrideMigrator};
23pub use parser::{
24    OptionValue, OverrideOperator, OverrideParser, ParsedOverride, ParsedOverrides,
25    SmartOverrideParser, parse_override, parse_override_to_command,
26};
27pub use preview::{OverridePreview, PreviewChange};
28pub use resolver::{OverrideResolver, ResolutionStrategy};
29pub use storage::OverrideStorage;
30pub use system::{OverrideSystem, PreviewParams};
31
32// Alias for compatibility
33pub type OverrideManager = OverrideSystem;
34
35use serde::{Deserialize, Serialize};
36use std::path::PathBuf;
37
38pub use raz_config::CommandOverride;
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct OverrideContext {
42    pub file_path: PathBuf,
43    pub cursor_line: Option<usize>,
44    pub cursor_column: Option<usize>,
45    pub content: Option<String>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct OverrideEntry {
50    pub key: OverrideKey,
51    pub override_config: CommandOverride,
52    pub metadata: OverrideMetadata,
53}
54
55#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
56pub enum ValidationStatus {
57    /// Just saved, not yet executed
58    Pending,
59    /// Executed successfully at least once
60    Validated,
61    /// Failed N times
62    Failed(u32),
63}
64
65impl Default for ValidationStatus {
66    fn default() -> Self {
67        Self::Pending
68    }
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct OverrideMetadata {
73    pub created_at: chrono::DateTime<chrono::Utc>,
74    pub modified_at: chrono::DateTime<chrono::Utc>,
75    pub file_path: PathBuf,
76    pub function_name: Option<String>,
77    pub original_line: Option<usize>,
78    pub notes: Option<String>,
79    #[serde(default)]
80    pub validation_status: ValidationStatus,
81    pub last_execution_time: Option<chrono::DateTime<chrono::Utc>>,
82    pub last_execution_success: Option<bool>,
83    #[serde(default)]
84    pub failure_count: u32,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct ResolvedOverride {
89    pub key: OverrideKey,
90    pub override_data: raz_config::CommandOverride,
91    pub match_quality: MatchQuality,
92}
93
94#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
95pub enum MatchQuality {
96    Exact,
97    FuzzyFunction,
98    LineRange,
99    FileLevel,
100    WorkspaceDefault,
101}