mod change;
mod ci;
mod init;
mod prepare;
mod publish;
mod verify;
pub use change::ChangeArgs;
pub(crate) use change::cmd_change;
pub use ci::CiArgs;
pub(crate) use ci::cmd_ci;
pub use init::InitArgs;
pub(crate) use init::cmd_init;
pub use prepare::PrepareArgs;
pub(crate) use prepare::cmd_prepare;
pub use publish::PublishArgs;
pub(crate) use publish::cmd_publish;
pub use verify::VerifyArgs;
pub(crate) use verify::cmd_verify;
use clap::{ArgAction, Args, Parser, Subcommand};
#[derive(Args, Debug, Clone)]
pub struct GlobalArgs {
#[arg(long, global = true, default_value_t = true, action = ArgAction::SetTrue, overrides_with = "no_interactive")]
pub interactive: bool,
#[arg(long, global = true, action = ArgAction::SetTrue, overrides_with = "interactive")]
pub no_interactive: bool,
#[arg(short = 'v', long, global = true, action = ArgAction::Count, conflicts_with = "silent")]
pub verbose: u8,
#[arg(short = 's', long, global = true, action = ArgAction::SetTrue, conflicts_with = "verbose")]
pub silent: bool,
#[arg(short = 'n', long, global = true, action = ArgAction::SetTrue)]
pub dry_run: bool,
}
impl Default for GlobalArgs {
fn default() -> Self {
Self {
interactive: true,
no_interactive: false,
verbose: 0,
silent: false,
dry_run: false,
}
}
}
#[derive(Parser)]
#[command(name = "cursus", about = "Release management", version)]
pub struct Cli {
#[command(flatten)]
pub global: GlobalArgs,
#[command(subcommand)]
pub command: Option<Command>,
}
#[derive(Subcommand)]
pub enum Command {
Change(ChangeArgs),
Ci(CiArgs),
Init(InitArgs),
Prepare(PrepareArgs),
Publish(PublishArgs),
Verify(VerifyArgs),
}
#[cfg(test)]
mod tests;