use clap::{crate_authors, crate_description, crate_version, Parser, ValueHint};
use std::path::PathBuf;
#[derive(Parser)]
#[clap(author=crate_authors!(), version=crate_version!(), about=crate_description!())]
pub struct Opts {
#[clap(short, long)]
pub verbose: bool,
#[clap(short, long, required = false, value_hint=ValueHint::DirPath)]
pub source: Vec<PathBuf>,
#[clap(short, long, required = false, value_hint=ValueHint::DirPath)]
pub movie_source: Vec<PathBuf>,
#[clap(long, required = false)]
pub force: Vec<String>,
#[clap(long)]
pub force_all: bool,
#[clap(subcommand)]
pub subcmd: Option<SubCmd>,
}
#[derive(Parser)]
pub enum SubCmd {
Bgm(BgmCmd),
}
#[derive(Parser)]
pub struct BgmCmd {
#[clap(subcommand)]
pub subcmd: BgmSubCmd,
}
#[derive(Parser)]
pub enum BgmSubCmd {
Search(BgmSearchOpt),
Get(BgmGetSubjectOpt),
GetEp(BgmGetSubjectEpsOpt),
}
#[derive(Parser)]
pub struct BgmSearchOpt {
#[clap(help = "search keyword")]
pub keyword: Vec<String>,
}
#[derive(Parser)]
pub struct BgmGetSubjectOpt {
#[clap(help = "subject id")]
pub id: u32,
}
#[derive(Parser)]
pub struct BgmGetSubjectEpsOpt {
#[clap(help = "subject id")]
pub id: u32,
}