use crate::prelude::*;
use caesura_macros::CommandEnum;
pub type ArgumentsProvider = ArgsProvider<Cli, Command>;
#[derive(CommandEnum, Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Command {
#[options(AuditArgs, AuditOptions, ConfigOptions)]
Audit,
#[options(
ConfigOptions,
SharedOptions,
VerifyOptions,
TargetOptions,
SpectrogramOptions,
SoxOptions,
CopyOptions,
FileOptions,
RunnerOptions,
UploadOptions,
QbitOptions,
QbitUploadOptions,
CacheOptions,
BatchOptions,
ReportOptions
)]
Batch,
#[options(ConfigOptions)]
Config,
#[options(
SourceArg,
ConfigOptions,
SharedOptions,
CacheOptions,
FileOptions,
TargetOptions,
CrossConfigOptions,
CrossOptions,
QbitOptions,
QbitCrossOptions,
CopyOptions
)]
Cross,
Docs,
#[options(InspectArg)]
Inspect,
#[command(subcommand_required = true, arg_required_else_help = true)]
Queue(QueueCommand),
#[options(
SourceArg,
ConfigOptions,
SharedOptions,
SpectrogramOptions,
SoxOptions,
RunnerOptions
)]
Spectrogram,
#[options(
SourceArg,
ConfigOptions,
SharedOptions,
TargetOptions,
SoxOptions,
CopyOptions,
FileOptions,
RunnerOptions
)]
Transcode,
#[options(
SourceArg,
ConfigOptions,
SharedOptions,
TargetOptions,
UploadOptions,
QbitOptions,
QbitUploadOptions,
CopyOptions
)]
Upload,
#[options(
SourceArg,
ConfigOptions,
SharedOptions,
CacheOptions,
TargetOptions,
VerifyOptions,
ReportOptions
)]
Verify,
#[command(short_flag = 'V', long_flag = "version")]
#[options(SoxOptions)]
Version,
}
#[derive(CommandEnum, Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[command_enum(parent = "queue")]
pub enum QueueCommand {
#[options(ConfigOptions, SharedOptions, CacheOptions, QueueAddArgs)]
Add,
#[options(
ConfigOptions,
SharedOptions,
CacheOptions,
QbitOptions,
QueueFetchOptions
)]
Fetch,
#[options(ConfigOptions, SharedOptions, CacheOptions, BatchOptions)]
List,
#[cli_name = "rm"]
#[options(QueueRemoveArgs, ConfigOptions, SharedOptions, CacheOptions)]
Remove,
#[options(ConfigOptions, SharedOptions, CacheOptions)]
Summary,
}