You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.4 KiB
Rust
72 lines
2.4 KiB
Rust
use clap::{ArgAction, Parser, Subcommand};
|
|
|
|
#[derive(Debug, Clone, Parser)]
|
|
#[clap(name="Malachite", version=env!("CARGO_PKG_VERSION"), about=env!("CARGO_PKG_DESCRIPTION"))]
|
|
pub struct Args {
|
|
#[clap(subcommand)]
|
|
pub subcommand: Option<Operation>,
|
|
|
|
/// Sets the level of verbosity
|
|
#[clap(long, short, global(true), action=ArgAction::Count)]
|
|
pub verbose: u8,
|
|
|
|
/// Complete operations without prompting user
|
|
#[clap(long="noconfirm", global(true), action=ArgAction::SetTrue)]
|
|
pub no_confirm: bool,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Subcommand)]
|
|
pub enum Operation {
|
|
/// Builds the given packages
|
|
#[clap(name="build", aliases=&["b"])]
|
|
Build {
|
|
/// The packages to operate on
|
|
#[clap(name="package(s)", action=ArgAction::Append, index=1)]
|
|
packages: Vec<String>,
|
|
|
|
/// Builds all packages in mlc.toml (except if -x is specified)
|
|
#[clap(long="all", takes_value=false, action=ArgAction::SetTrue, conflicts_with="package(s)")]
|
|
all: bool,
|
|
|
|
/// Excludes packages from given operation
|
|
#[clap(short='x', long="exclude", action=ArgAction::Append, takes_value=true)]
|
|
exclude: Vec<String>,
|
|
|
|
/// Does not regenerate repository after building given package(s)
|
|
#[clap(short='n', long="no-regen", action=ArgAction::SetTrue)]
|
|
no_regen: bool,
|
|
},
|
|
|
|
/// Generates repository from built packages
|
|
#[clap(name="repo-gen", aliases=&["r"])]
|
|
RepoGen,
|
|
|
|
/// Prunes duplicate packages from the repository
|
|
#[clap(name="prune", aliases=&["p"])]
|
|
Prune,
|
|
|
|
/// Clones all git repositories from mlc.toml branching from current directory
|
|
#[clap(name="init", aliases=&["i"])]
|
|
Init,
|
|
|
|
/// Pulls in git repositories from mlc.toml branching from current directory
|
|
#[clap(name="pull", aliases=&["u"])]
|
|
Pull {
|
|
/// The packages to operate on
|
|
#[clap(name="package(s)", help="The packages to operate on", action=ArgAction::Append, index=1)]
|
|
packages: Vec<String>,
|
|
|
|
/// Pulls from all git repositories from mlc.toml branching from current directory
|
|
#[clap(long="all", action=ArgAction::SetTrue, conflicts_with="package(s)")]
|
|
all: bool,
|
|
|
|
/// Excludes packages from given operation
|
|
#[clap(short='x', long="exclude", action=ArgAction::Append, takes_value=true)]
|
|
exclude: Vec<String>,
|
|
},
|
|
|
|
/// Create and/or open local config file
|
|
#[clap(name="config", aliases=&["c"])]
|
|
Config,
|
|
}
|