use clap::{Parser, Subcommand};
use std::net::Ipv4Addr;
#[derive(Parser, Debug)]
#[command(version,about,long_about = None)]
pub struct Args {
#[command(subcommand)]
pub(crate) command: Commands,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
Serve {
#[arg(value_name = "PATH", default_value = ".")]
dir: String,
#[arg(short, long, value_name = "PORT", default_value_t = 5005)]
port: u16,
#[arg(short, long, value_name = "ADDR", default_value_t= Ipv4Addr::from([0,0,0,0]))]
addr: Ipv4Addr,
#[arg(long, value_name = "TIMEOUT_DISABLED", default_value_t = false)]
no_timeout: bool,
},
Init {
#[arg(value_name = "REPO_NAME", required = true)]
repo_path: String,
},
SetHead {
#[arg(value_name = "REPOSITORY", required = true)]
repo_path: String,
#[arg(value_name = "BRANCH", required = true)]
branch: String,
},
}