#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ApplyOptions {
pub skip_disabled_patches: bool,
pub validate_output: bool,
}
impl Default for ApplyOptions {
fn default() -> Self {
Self {
skip_disabled_patches: true,
validate_output: false,
}
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ApplyResult {
pub output_config: String,
pub stats: CompileStats,
pub trace: Vec<TraceView>,
pub rule_annotations: Vec<RuleAnnotation>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct CompileStats {
pub total_patches: usize,
pub succeeded: usize,
pub skipped: usize,
pub total_added: usize,
pub total_removed: usize,
pub total_modified: usize,
pub total_duration_us: u64,
pub avg_duration_us: u64,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct TraceView {
pub patch_id: String,
pub source_file: Option<String>,
pub op_name: String,
pub duration_us: u64,
pub condition_matched: bool,
pub summary: TraceSummaryView,
pub diff: TraceDiffView,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct TraceSummaryView {
pub added: usize,
pub removed: usize,
pub modified: usize,
pub kept: usize,
pub total_before: usize,
pub total_after: usize,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct TraceDiffView {
pub added: Vec<String>,
pub removed: Vec<String>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct RuleAnnotation {
pub rule_text: String,
pub index_in_output: usize,
pub source_file: String,
pub source_patch: String,
pub source_label: String,
pub immutable: bool,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct RuleGroup {
pub group_id: String,
pub label: String,
pub patch_id: String,
pub enabled: bool,
pub immutable: bool,
pub rules: Vec<RuleEntry>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct RuleEntry {
pub raw: String,
pub index: usize,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct RuleDiff {
pub added: Vec<String>,
pub removed: Vec<String>,
pub modified: Vec<String>,
pub position_changes: Vec<PositionChange>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct PositionChange {
pub from: usize,
pub to: usize,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum RuleInsertPosition {
BeforePrism,
AfterGroup(String),
AfterPrism,
Append,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct PrismStatus {
pub watching: bool,
pub watching_count: usize,
pub last_compile_time: Option<String>,
pub last_compile_success: bool,
pub patch_count: usize,
pub script_count: usize,
pub plugin_count: usize,
}