use crate::cli::context::ProjectTypeHint;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum DetectedProjectType {
Rust,
Python,
TypeScript,
Go,
Generic,
}
impl std::fmt::Display for DetectedProjectType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
DetectedProjectType::Rust => write!(f, "rust"),
DetectedProjectType::Python => write!(f, "python"),
DetectedProjectType::TypeScript => write!(f, "typescript"),
DetectedProjectType::Go => write!(f, "go"),
DetectedProjectType::Generic => write!(f, "generic"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FileInitStatus {
Created,
Valid,
}
pub struct ContextInitOptions {
pub force: bool,
pub project_type_hint: Option<ProjectTypeHint>,
pub output_path: std::path::PathBuf,
pub interactive: bool,
}
pub struct ContextUpdateOptions {
pub sections: Vec<String>,
pub file: Option<std::path::PathBuf>,
pub interactive: bool,
pub dry_run: bool,
pub output_path: std::path::PathBuf,
}
pub struct ContextValidateOptions {
pub strict: bool,
pub path: std::path::PathBuf,
}
pub struct InitReport {
pub status: FileInitStatus,
pub detected_project_type: DetectedProjectType,
pub output_path: std::path::PathBuf,
}
pub struct UpdateReport {
pub sections_updated: Vec<String>,
pub dry_run: bool,
}
pub struct ValidateReport {
pub valid: bool,
pub missing_sections: Vec<String>,
pub outdated_sections: Vec<String>,
}