Change argument parsing to clap v3 derives
With this change the arguments are parsed with the new clap v3 derive syntax. This commit also sets the default command to Upgrade similar to the behaviour of other aur helpers. Signed-off-by: Trivernis <trivernis@protonmail.com>i18n
parent
09a5748827
commit
2c2677ae88
@ -0,0 +1,85 @@
|
|||||||
|
use clap::{Parser, Subcommand};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Parser)]
|
||||||
|
#[clap(name="Amethyst", 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, parse(from_occurrences))]
|
||||||
|
pub verbose: usize,
|
||||||
|
|
||||||
|
/// Complete operation without prompting user
|
||||||
|
#[clap(long = "noconfirm")]
|
||||||
|
pub no_confirm: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Subcommand)]
|
||||||
|
pub enum Operation {
|
||||||
|
/// Installs a package from either the AUR or the PacMan-defined repositories
|
||||||
|
#[clap(name="install", aliases=&["i", "-S"])]
|
||||||
|
Install(InstallArgs),
|
||||||
|
|
||||||
|
/// Removes a previously installed package
|
||||||
|
#[clap(name="remove", aliases=&["rm", "-R", "Rs"])]
|
||||||
|
Remove(RemoveArgs),
|
||||||
|
|
||||||
|
/// Searches for the relevant packages in both the AUR and repos
|
||||||
|
#[clap(name="search", aliases=&["sea", "-Ss"])]
|
||||||
|
Search(SearchArgs),
|
||||||
|
|
||||||
|
/// Queries installed packages
|
||||||
|
#[clap(name="query", aliases=&["ls", "-Q"])]
|
||||||
|
Query(QueryArgs),
|
||||||
|
|
||||||
|
/// Upgrades locally installed packages to their latest versions
|
||||||
|
#[clap(name="upgrade", aliases=&["upg", "-Syu"])]
|
||||||
|
Upgrade,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Operation {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self::Upgrade
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Clone, Parser)]
|
||||||
|
pub struct InstallArgs {
|
||||||
|
/// The name of the package(s) to install
|
||||||
|
#[clap(required = true)]
|
||||||
|
pub packages: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Clone, Parser)]
|
||||||
|
pub struct RemoveArgs {
|
||||||
|
/// The name of the package(s) to remove
|
||||||
|
#[clap(required = true)]
|
||||||
|
pub packages: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Clone, Parser)]
|
||||||
|
pub struct SearchArgs {
|
||||||
|
/// Searches for the relevant packages in both the AUR and repos
|
||||||
|
#[clap(long, short)]
|
||||||
|
pub aur: bool,
|
||||||
|
|
||||||
|
/// Searches only local repos for the package
|
||||||
|
#[clap(long, short)]
|
||||||
|
pub repo: bool,
|
||||||
|
|
||||||
|
/// The string the package must match in the search
|
||||||
|
#[clap(required = true)]
|
||||||
|
pub search: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Clone, Parser)]
|
||||||
|
pub struct QueryArgs {
|
||||||
|
/// Lists AUR/foreign packages
|
||||||
|
#[clap(long, short)]
|
||||||
|
pub aur: bool,
|
||||||
|
|
||||||
|
/// Lists repo/native packages
|
||||||
|
#[clap(long, short)]
|
||||||
|
pub repo: bool,
|
||||||
|
}
|
Loading…
Reference in New Issue