diff --git a/r621cli/Cargo.toml b/r621cli/Cargo.toml index a84653e..122911d 100644 --- a/r621cli/Cargo.toml +++ b/r621cli/Cargo.toml @@ -4,3 +4,4 @@ version = "0.1.0" edition = "2024" [dependencies] +clap = { version = "4.5.42", features = ["derive"] } diff --git a/r621cli/src/cli.rs b/r621cli/src/cli.rs new file mode 100644 index 0000000..8f4c87d --- /dev/null +++ b/r621cli/src/cli.rs @@ -0,0 +1,30 @@ +use clap::{Parser, Subcommand, ValueEnum}; + +#[derive(Parser, Clone, Debug)] +#[command(version, name = "r621cli")] +pub struct Cli { + #[arg(value_enum)] + pub esix_type: ESixType, + + #[clap(subcommand)] + pub action: Action, +} + + +#[derive(Subcommand, Clone, Debug)] +pub enum Action { + Create, + Delete, + Favorite, + Search { + query: String + }, + Vote +} + +#[derive(ValueEnum, Clone, Debug)] +pub enum ESixType { + Note, + Pool, + Post +} diff --git a/r621cli/src/main.rs b/r621cli/src/main.rs index e7a11a9..a3edfb3 100644 --- a/r621cli/src/main.rs +++ b/r621cli/src/main.rs @@ -1,3 +1,17 @@ +mod cli; + +use cli::{Cli, Action, ESixType}; +use clap::Parser; + fn main() { - println!("Hello, world!"); + let cli = Cli::parse(); + + match (&cli.esix_type, &cli.action) { + (ESixType::Post, Action::Search {query}) => { + + } + _ => { + todo!("{:?} not implemented for {:?}", &cli.action, &cli.esix_type); + } + } }