patholog 1.0.0

Diagnose, explain, clean, and safely repair PATH behavior.
Documentation
/// A PATH-affecting line found in a shell profile.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PathMutation {
    /// One-based line number.
    pub line: usize,
    /// Stable mutation classification.
    pub kind: &'static str,
    /// Trimmed source line, capped for display.
    pub text: String,
}

/// Shell startup profile considered by the read-only scanner.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ShellProfile {
    /// Shell or profile family.
    pub shell: &'static str,
    /// Profile path display value.
    pub path: String,
    /// Whether the profile exists.
    pub exists: bool,
    /// Whether the existing profile is a regular file.
    pub is_file: bool,
    /// Whether the profile content could be read.
    pub readable: bool,
    /// PATH-affecting lines found in the profile.
    pub path_mutations: Vec<PathMutation>,
}

/// Read-only shell startup profile scan report.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ShellProfileScanReport {
    /// Home directory used to build known profile paths.
    pub home: String,
    /// Known profiles considered by the scanner.
    pub profiles: Vec<ShellProfile>,
}