From 6536f3aae95e266f80a5a73288e181ff10ce650b Mon Sep 17 00:00:00 2001 From: ottjk Date: Sat, 30 Dec 2023 19:40:27 -0500 Subject: initial commit --- src/arguments.rs | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/arguments.rs (limited to 'src/arguments.rs') diff --git a/src/arguments.rs b/src/arguments.rs new file mode 100644 index 0000000..24697d9 --- /dev/null +++ b/src/arguments.rs @@ -0,0 +1,59 @@ +use clap::{Parser,Subcommand,Args}; +use std::path::PathBuf; + +#[derive(Parser)] +pub struct Cli { + #[command(subcommand)] + pub command: Commands, + + /// Configuration file location + #[arg(short, long)] + pub config: Option, +} + +#[derive(Subcommand)] +pub enum Commands { + /// Add or update config from list + Modify(ModifyArgs), + + /// Remove program from list + Remove(RemoveArgs), + + /// Print list of tracked configs + List {}, + + /// Update a config + Sync(SyncArgs), +} + +#[derive(Args)] +pub struct ModifyArgs { + /// Name of program + pub name: String, + + /// Parent directory on system config resides in + pub dest: PathBuf, + + /// File(s) in configs directory + pub file: PathBuf, +} + +#[derive(Args)] +pub struct RemoveArgs { + /// Name of program + pub name: String, +} + +#[derive(Args)] +pub struct SyncArgs { + /// Names of programs to update + pub names: Vec, + + /// Sync all programs + #[arg(short, long)] + pub all: bool, + + /// Never prompt to skip + #[arg(short, long)] + pub force: bool, +} -- cgit v1.3