use clap::ArgGroup;
use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[clap(about, version, author)]
#[clap(group(
ArgGroup::new("category")
// .required(true)
.args(&["work", "personal"]),
))]
pub struct Args {
#[clap(short, long, default_value = "~/.slip.toml")]
pub config: String,
#[clap(global = true, short, long)]
pub work: bool,
#[clap(global = true, short, long)]
pub personal: bool,
#[clap(subcommand)]
pub command: Option<SubCommands>,
}
impl Args {
pub fn config(&self) -> String {
String::from(shellexpand::tilde(&self.config))
}
}
#[derive(Subcommand, Debug, Clone)]
pub enum SubCommands {
Clone {
url: String,
dir: Option<String>,
},
Reconfig,
List {
#[clap(index = 1)]
filter: Option<String>,
},
Ui,
New {
#[clap(index = 1)]
repo: String,
},
Add {
#[clap(index = 1)]
repo: String,
},
}