Finish init command implementation

init command is supposed to have a path argument. Let's make it mandatory and extract it:

// src/cli/mod.rs

#[derive(Debug)]
pub enum Command {
    // Change init to have a path field
    Init { path: String },
}

pub fn parse_args() -> Result<Command, String> {
    let matches = command!()
        .subcommand(
            // Make path argument to init command mandatory
            ClapCommand::new("init").arg(Arg::new("path").value_name("PATH").required(true)),
        )
        .get_matches();

    match matches.subcommand_matches("init") {
        Some(subcommand) => {
            // Extract path and pass it to Command::Init
            let path = subcommand.get_one::<String>("path").unwrap().clone();
            Ok(Command::Init { path })
        }
        None => Err("Failed to parse".to_string()),
    }
}

Then change the main to respect init command:

use rit::{parse_args, repository::GitRepository, Command};

fn main() {
    let command = parse_args().unwrap();
    match command {
        Command::Init { path } => GitRepository::create(path).unwrap(),
    };
}

Finally you can run it cargo run -- init /tmp/test-project. You'll have a compilation error. Try to fix it or take a look at the commit!