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
32pub 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 Pending,
59 Validated,
61 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}