mod add_context;
mod common;
mod completions;
mod coverage;
mod header;
mod info;
mod search;
mod set_fuzzy;
mod stale;
mod validate;
use std::path::PathBuf;
use std::process::ExitCode;
use clap::Subcommand;
pub use header::HeaderCommand;
#[derive(Subcommand, Debug)]
pub enum Command {
Info {
#[arg(long)]
path: Option<PathBuf>,
},
Coverage {
#[arg(long)]
path: Option<PathBuf>,
},
Validate {
#[arg(long)]
path: Option<PathBuf>,
},
Search {
pattern: String,
#[arg(long)]
path: Option<PathBuf>,
#[arg(long, default_value = "50")]
limit: usize,
},
Stale {
#[arg(long)]
path: Option<PathBuf>,
},
AddContext {
msgid: String,
msgctxt: String,
#[arg(long)]
path: Option<PathBuf>,
#[arg(long)]
dry_run: bool,
},
SetFuzzy {
msgid: String,
#[arg(long)]
msgctxt: Option<String>,
#[arg(long)]
clear: bool,
#[arg(long)]
path: Option<PathBuf>,
#[arg(long)]
dry_run: bool,
},
#[command(subcommand)]
Header(HeaderCommand),
Completions {
shell: clap_complete::Shell,
},
}
pub fn run(cmd: Command, json: bool) -> ExitCode {
match cmd {
Command::Info { path } => info::run(path, json),
Command::Coverage { path } => coverage::run(path, json),
Command::Validate { path } => validate::run(path, json),
Command::Search {
pattern,
path,
limit,
} => search::run(pattern, path, limit, json),
Command::Stale { path } => stale::run(path, json),
Command::AddContext {
msgid,
msgctxt,
path,
dry_run,
} => add_context::run(msgid, msgctxt, path, dry_run, json),
Command::SetFuzzy {
msgid,
msgctxt,
clear,
path,
dry_run,
} => set_fuzzy::run(msgid, msgctxt, clear, path, dry_run, json),
Command::Header(hcmd) => header::run(hcmd, json),
Command::Completions { shell } => completions::run(shell),
}
}