From 6d19fca75510df17d6a14e35ac44845b8f43a695 Mon Sep 17 00:00:00 2001 From: Bernhard Guillon Date: Mon, 22 Sep 2025 21:36:42 +0200 Subject: future-me: use clap --- src/bin/main.rs | 53 ++++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'src/bin') diff --git a/src/bin/main.rs b/src/bin/main.rs index 79242a7..c4e1b1f 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -16,7 +16,7 @@ use std::{ use std::fs; use std::collections::HashMap; use chrono::{Utc, TimeZone}; -use std::env::args; +use clap::{Parser, Subcommand}; // TODO use git::*; @@ -163,36 +163,39 @@ fn create_new_bug() { read_tree(&save_current_tree); } -fn print_usage() { - println!("usage: future-me \n"); - println!("commands:"); - println!("show - shows the log"); - println!("new - enter new bug"); - println!("help - get this help"); + +#[derive(Parser)] +#[command( + name = "future-me", + version, + about = "A distributed git based bug tracker", +)] +struct Cli { + #[command(subcommand)] + command: Commands, } -enum Cmd{ +#[derive(Subcommand)] +enum Commands { Show, New, -} - -fn process_args() -> Cmd { - let myargs: Vec = args().collect(); - println!("{:?}", myargs); - if myargs.len() != 2 { - print_usage(); - } - let unwraped = myargs.get(1).unwrap(); - match unwraped.as_str() { - "show" => Cmd::Show, - "new" => Cmd::New, - _ => {print_usage(); todo!()}, - } + Reply { + hash: String, + }, } fn main() { - match process_args() { - Cmd::Show => show(), - Cmd::New => create_new_bug(), + let cli = Cli::parse(); + + match cli.command { + Commands::Show => { + show(); + } + Commands::New => { + create_new_bug(); + } + Commands::Reply { hash } => { + println!("Replying with: {}", hash); + } } } -- cgit v1.2.3