use std::path::PathBuf;
use clap::Subcommand;
use crate::decompiler::OutputFormat;
use super::catalog::CatalogArgs;
use super::formats::{DecompileFormat, DisasmFormat, InfoFormat, TokensFormat};
use super::schema::SchemaArgs;
#[derive(Debug, Subcommand)]
pub(in crate::cli) enum Command {
Info {
path: PathBuf,
#[arg(long, value_enum, default_value_t = InfoFormat::Text)]
format: InfoFormat,
},
Disasm {
path: PathBuf,
#[arg(long, value_enum, default_value_t = DisasmFormat::Text)]
format: DisasmFormat,
#[arg(long)]
fail_on_unknown_opcodes: bool,
},
Cfg {
path: PathBuf,
#[arg(long)]
fail_on_unknown_opcodes: bool,
},
Decompile {
path: PathBuf,
#[arg(long, value_enum, default_value_t = DecompileFormat::HighLevel)]
format: DecompileFormat,
#[arg(long, value_enum, default_value_t = OutputFormat::All)]
output_format: OutputFormat,
#[arg(long)]
fail_on_unknown_opcodes: bool,
#[arg(long)]
inline_single_use_temps: bool,
},
Tokens {
path: PathBuf,
#[arg(long, value_enum, default_value_t = TokensFormat::Text)]
format: TokensFormat,
},
Catalog(CatalogArgs),
Schema(SchemaArgs),
}