use clap::{Args, Parser};
#[derive(Debug, Parser)]
#[command(name = "bbox-tile-server")]
#[command(about = "BBOX tile server", long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Parser, Debug)]
pub enum Commands {
#[command(arg_required_else_help = true)]
Seed(SeedArgs),
#[command(arg_required_else_help = true)]
Upload(UploadArgs),
}
#[derive(Debug, Args)]
pub struct SeedArgs {
#[arg(long)]
pub tileset: String,
#[arg(long)]
pub minzoom: Option<u8>,
#[arg(long)]
pub maxzoom: Option<u8>,
#[arg(long)]
pub tms: Option<String>,
#[arg(long)]
pub extent: Option<String>,
#[arg(long, group = "store")]
pub tile_path: Option<String>,
#[arg(long, group = "store")]
pub s3_path: Option<String>,
#[arg(long, group = "store")]
pub mb_path: Option<String>,
#[arg(long, group = "store")]
pub pm_path: Option<String>,
#[arg(long, group = "store")]
pub no_store: bool,
#[arg(short, long)]
pub threads: Option<usize>,
#[arg(long)]
pub tasks: Option<usize>,
#[arg(long)]
pub overwrite: Option<bool>,
pub file_or_url: Option<String>,
}
#[derive(Debug, Args)]
pub struct UploadArgs {
#[arg(short, long)]
pub srcdir: std::path::PathBuf,
#[arg(long, group = "output_s3")]
pub s3_path: String,
#[arg(short, long, value_enum, default_value("tasks"))]
pub mode: Mode,
#[arg(short, long)]
pub threads: Option<usize>,
#[arg(long)]
pub tasks: Option<usize>,
}
#[derive(clap::ValueEnum, Clone, Debug)]
pub enum Mode {
Sequential,
Tasks,
Channels,
}