use std::path::PathBuf;
use clap::Args;
use super::fetch::ClientFetchArgs;
pub const DEFAULT_JOBS: usize = 4;
pub const DEFAULT_MAX_LANE_STREAMS: u16 = 4;
#[derive(Args, Debug)]
#[expect(
clippy::struct_excessive_bools,
reason = "independent CLI flags (--overwrite/--dry-run/--json/--select), not a state machine"
)]
pub struct GetArgs {
#[arg(value_name = "URI")]
pub uri: String,
#[arg(short = 'o', long, value_name = "PATH")]
pub output: PathBuf,
#[arg(long, value_name = "N")]
pub jobs: Option<usize>,
#[arg(long, value_name = "N", value_parser = clap::value_parser!(u16).range(1..=64))]
pub max_lane_streams: Option<u16>,
#[arg(long = "include", value_name = "GLOB", action = clap::ArgAction::Append)]
pub include: Vec<String>,
#[arg(long = "exclude", value_name = "GLOB", action = clap::ArgAction::Append)]
pub exclude: Vec<String>,
#[arg(long)]
pub select: bool,
#[arg(long)]
pub overwrite: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub json: bool,
#[command(flatten)]
pub common: ClientFetchArgs,
}