#[derive(clap::Parser, Debug)]
#[command(about, version)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(clap::Subcommand, Debug)]
#[non_exhaustive]
pub enum Command {
Assemble(AssembleArguments),
Id(IdArguments),
Init(InitArguments),
#[command(flatten)]
Licences(list_my_licence::cli::LicenceCommand),
Render(RenderArguments),
Scan(ScanArguments),
}
#[derive(clap::Args, Debug)]
pub struct AssembleArguments {
#[arg(default_value = "CHANGELOG.ron", long, short)]
pub changelog: std::path::PathBuf,
#[arg(default_value = "changelog.d", long, short)]
pub input: std::path::PathBuf,
#[arg(long, short)]
pub released: Option<String>,
pub version: String,
}
#[derive(clap::Args, Debug)]
pub struct IdArguments {
#[arg(default_value = "CHANGELOG.ron", long, short)]
pub changelog: std::path::PathBuf,
#[command(subcommand)]
pub command: IdCommand,
}
#[derive(clap::Subcommand, Debug)]
#[non_exhaustive]
pub enum IdCommand {
Inherit,
Register(RegisterArguments),
Update(UpdateArguments),
Merge(MergeArguments),
}
#[derive(clap::Args, Debug)]
pub struct RegisterArguments {
pub alias: String,
pub name: String,
pub email: String,
}
#[derive(clap::Args, Debug)]
pub struct UpdateArguments {
pub alias: String,
#[arg(long)]
pub rename: Option<String>,
#[arg(long)]
pub add_name: Vec<String>,
#[arg(long)]
pub remove_name: Vec<String>,
#[arg(long)]
pub add_email: Vec<String>,
#[arg(long)]
pub remove_email: Vec<String>,
#[arg(long)]
pub add_url: Vec<String>,
#[arg(long)]
pub remove_url: Vec<String>,
#[arg(long)]
pub primary_name: Option<String>,
#[arg(long)]
pub primary_email: Option<String>,
#[arg(long)]
pub primary_url: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct MergeArguments {
#[arg(num_args = 2.., required = true)]
pub aliases: Vec<String>,
}
#[derive(clap::Args, Debug)]
pub struct InitArguments {
#[arg(default_value = "CHANGELOG.ron", long, short)]
pub output: std::path::PathBuf,
#[arg(long, short)]
pub force: bool,
}
#[derive(clap::Args, Debug)]
pub struct RenderArguments {
#[arg(default_value = "CHANGELOG.ron", long, short)]
pub changelog: std::path::PathBuf,
#[arg(default_value = "CHANGELOG.md", long, short)]
pub output: std::path::PathBuf,
}
#[derive(clap::Args, Debug)]
pub struct ScanArguments {
#[arg(default_value = "main", long, short)]
pub base: String,
#[arg(default_value = "CHANGELOG.ron", long, short)]
pub changelog: std::path::PathBuf,
#[arg(long, short)]
pub force: bool,
#[arg(default_value = "changelog.d", long, short)]
pub output: std::path::PathBuf,
}