use std::path::PathBuf;
use clap::{Args, Subcommand};
#[derive(Args, Debug)]
pub struct OriginArgs {
#[command(subcommand)]
pub cmd: OriginCommand,
}
#[derive(Subcommand, Debug)]
pub enum OriginCommand {
Import(OriginImportArgs),
}
#[expect(
clippy::struct_excessive_bools,
reason = "independent CLI flags, not modelled state"
)]
#[derive(Args, Debug)]
pub struct OriginImportArgs {
#[arg(short = 'i', long, value_name = "PATH")]
pub input: PathBuf,
#[arg(long, value_name = "DIR")]
pub to: Option<PathBuf>,
#[arg(long = "move")]
pub move_source: bool,
#[arg(long, value_name = "FILE")]
pub bundle: Option<PathBuf>,
#[arg(long)]
pub force: bool,
#[arg(long)]
pub follow_symlinks: bool,
#[arg(long = "exclude", value_name = "GLOB", action = clap::ArgAction::Append)]
pub exclude: Vec<String>,
#[arg(long, value_name = "DIR")]
pub subfolder: Option<String>,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub optimize: bool,
#[arg(long, value_name = "SIZE", value_parser = super::parse_byte_size)]
pub chunk_avg: Option<u64>,
#[arg(long, value_name = "SIZE", value_parser = super::parse_byte_size)]
pub chunk_min: Option<u64>,
#[arg(long, value_name = "SIZE", value_parser = super::parse_byte_size)]
pub chunk_max: Option<u64>,
#[arg(long)]
pub dry_run: bool,
}
#[cfg(test)]
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
mod tests;