use clap::Parser;
use std::path::PathBuf;
#[derive(Debug, Clone, Parser)]
#[command(name = "hadris-udf")]
#[command(author, version, about = "UDF filesystem utility", long_about = None)]
pub struct Args {
#[command(subcommand)]
pub cmd: Command,
}
#[derive(Debug, Clone, clap::Subcommand)]
pub enum Command {
Info(InfoArgs),
Ls(LsArgs),
Tree(TreeArgs),
Cat(CatArgs),
Extract(ExtractArgs),
Create(CreateArgs),
Verify(VerifyArgs),
}
#[derive(Debug, Clone, Parser)]
pub struct InfoArgs {
pub input: PathBuf,
#[arg(short, long)]
pub verbose: bool,
}
#[derive(Debug, Clone, Parser)]
pub struct LsArgs {
pub input: PathBuf,
#[arg(default_value = "/")]
pub path: String,
#[arg(short, long)]
pub long: bool,
#[arg(short, long)]
pub all: bool,
}
#[derive(Debug, Clone, Parser)]
pub struct TreeArgs {
pub input: PathBuf,
#[arg(default_value = "/")]
pub path: String,
#[arg(short, long)]
pub depth: Option<usize>,
}
#[derive(Debug, Clone, Parser)]
pub struct CatArgs {
pub input: PathBuf,
pub path: String,
}
#[derive(Debug, Clone, Parser)]
pub struct ExtractArgs {
pub input: PathBuf,
#[arg(short, long, default_value = ".")]
pub output: PathBuf,
#[arg(short, long)]
pub path: Option<String>,
#[arg(short, long)]
pub verbose: bool,
}
#[derive(Debug, Clone, Parser)]
pub struct CreateArgs {
pub source: PathBuf,
#[arg(short, long)]
pub output: PathBuf,
#[arg(short = 'V', long, default_value = "UDF_VOLUME")]
pub volume_name: String,
#[arg(short, long, default_value = "1.02")]
pub revision: String,
#[arg(short, long)]
pub verbose: bool,
#[arg(long)]
pub dry_run: bool,
}
#[derive(Debug, Clone, Parser)]
pub struct VerifyArgs {
pub input: PathBuf,
#[arg(short, long)]
pub verbose: bool,
}