use std::path::PathBuf;
use clap::{Parser, Subcommand};
use clap_complete::Shell;
use clap_verbosity_flag::Verbosity;
#[derive(Parser)]
#[clap(version, author, about)]
pub struct Cli {
#[clap(short = 'r', long, default_value = ".")]
pub root: PathBuf,
#[clap(short = 'c', long, default_value = "config.toml")]
pub config: PathBuf,
#[command(flatten)]
pub verbose: Verbosity,
#[clap(subcommand)]
pub command: Command,
}
#[derive(Subcommand)]
pub enum Command {
Init {
#[clap(default_value = ".")]
name: String,
#[clap(short = 'f', long)]
force: bool,
},
Build {
#[clap(short = 's', long)]
source: Option<String>,
#[clap(short = 'o', long)]
target: Option<String>,
#[clap(short = 'f', long)]
force: Option<bool>,
},
Check {
#[clap(short = 's', long)]
source: Option<String>,
},
Validate {
#[clap(value_delimiter = ' ', num_args = 1..)]
sources: Vec<String>,
#[clap(short = 's', long)]
schema: Option<String>,
},
Render {
#[clap(value_delimiter = ' ', num_args = 1..)]
sources: Vec<String>,
#[clap(short = 't', long)]
template: Option<String>,
},
Merge {
#[clap(value_delimiter = ' ', num_args = 1..)]
sources: Vec<String>,
#[clap(short = 'o', long)]
target: Option<String>,
},
Completion {
#[clap(value_enum)]
shell: Shell,
},
}