1use clap::{Parser, Subcommand};
2use std::path::PathBuf;
3
4#[derive(Parser)]
5#[command(author, version, about, long_about = None)]
6pub struct Cli {
7 #[arg(short, long, action = clap::ArgAction::Count, global = true)]
9 pub verbose: u8,
10
11 #[arg(short, long, global = true)]
13 pub delimiter: Option<String>,
14
15 #[command(subcommand)]
16 pub command: Option<Commands>,
17}
18
19#[derive(Subcommand)]
20pub enum Commands {
21 Inspect {
23 #[arg(value_name = "INPUT_PATHS")]
25 input_paths: Vec<PathBuf>,
26 },
27
28 Import {
30 #[arg(value_name = "INPUT_PATHS")]
32 input_paths: Vec<PathBuf>,
33
34 #[arg(long, value_name = "FORMAT")]
39 format: Option<String>,
40 },
41
42 Export {
44 #[arg(value_name = "INPUT_PATHS")]
46 input_paths: Vec<PathBuf>,
47
48 #[arg(long, value_name = "FORMAT", default_value = "json")]
50 format: String,
51
52 #[arg(long)]
54 pretty: bool,
55 },
56}
57
58pub fn get_cli() -> Cli {
59 Cli::parse()
60}