readseek 0.3.16

structural source reader with stable line hashes
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2026 Jarkko Sakkinen

use anyhow::{Result, bail};

#[derive(Clone, Copy, Debug)]
pub(crate) struct GitFlags {
    pub(crate) cached: bool,
    pub(crate) others: bool,
    pub(crate) ignored: bool,
}

impl GitFlags {
    pub(crate) fn validate(self) -> Result<()> {
        if self.ignored && !self.others {
            bail!("--ignored requires --others");
        }
        Ok(())
    }

    pub(crate) fn has_any(self) -> bool {
        self.cached || self.others || self.ignored
    }
}