use crate::core::verbs;
use std::path::PathBuf;
#[derive(Debug, Clone)]
pub struct Config {
pub base_dir: PathBuf,
pub shell_cmd: String,
pub inputs: Vec<String>,
pub recursive: bool,
pub num_threads: usize,
pub mode: Mode,
pub verbosity: Verbosity,
pub trailing_newline: bool,
}
impl Default for Config {
fn default() -> Self {
Self {
base_dir: PathBuf::from("."),
shell_cmd: "".to_string(),
inputs: vec![".".to_string()],
recursive: false,
num_threads: 4,
mode: Mode::Build,
verbosity: Verbosity::Normal,
trailing_newline: true,
}
}
}
#[derive(Debug, PartialEq, Clone)]
pub enum Verbosity {
Quiet,
Normal,
Verbose,
}
#[derive(Debug, PartialEq, Clone)]
pub enum Mode {
Build,
InMemoryBuild,
Clean,
Verify,
}
impl Mode {
pub fn processing_verb(&self) -> &'static str {
match self {
Self::Build | Self::InMemoryBuild => verbs::PROCESSING,
Self::Clean => verbs::CLEANING,
Self::Verify => verbs::VERIFYING,
}
}
pub fn processed_verb(&self) -> &'static str {
match self {
Self::Build | Self::InMemoryBuild => verbs::PROCESSED,
Self::Clean => verbs::CLEANED,
Self::Verify => verbs::VERIFIED,
}
}
}