use clap::{builder::styling::AnsiColor, builder::Styles, Parser, Subcommand};
use crate::{
build_order::BuildOrderArgs,
deb_dependencies::DebDependenciesArgs,
package::{PackageExecuteArgs, PackageExtractArgs, PackageInitArgs},
};
#[cfg(feature = "update-dependencies")]
use crate::update_dependencies::UpdateDependenciesArgs;
const CLI_STYLE: Styles = Styles::styled()
.header(AnsiColor::Yellow.on_default())
.usage(AnsiColor::Green.on_default())
.literal(AnsiColor::Green.on_default())
.placeholder(AnsiColor::Green.on_default());
#[derive(Debug, Clone, Parser)]
#[command(name = "debcargo", about = "Package Rust crates for Debian.")]
#[command(version)]
#[command(styles = CLI_STYLE)]
pub struct Cli {
#[command(subcommand)]
pub command: Opt,
}
#[derive(Debug, Clone, Subcommand)]
pub enum Opt {
Update,
DebSrcName {
crate_name: String,
version: Option<String>,
},
Extract {
#[command(flatten)]
init: PackageInitArgs,
#[command(flatten)]
extract: PackageExtractArgs,
},
Package {
#[command(flatten)]
init: PackageInitArgs,
#[command(flatten)]
extract: PackageExtractArgs,
#[command(flatten)]
finish: PackageExecuteArgs,
},
BuildOrder {
#[command(flatten)]
args: BuildOrderArgs,
},
DebDependencies {
#[command(flatten)]
args: DebDependenciesArgs,
},
#[cfg(feature = "update-dependencies")]
UpdateDependencies {
#[command(flatten)]
args: UpdateDependenciesArgs,
},
}