use crate::commands::{evm_opt::EvmOptArgs, mir_opt::MirOptArgs};
use clap::{Parser, Subcommand};
use solar_config::CompileOpts;
#[cfg(feature = "lsp")]
use solar_config::LspArgs;
#[derive(Parser)]
#[command(
name = "solar",
version = crate::version::short_version(),
long_version = crate::version::version(),
arg_required_else_help = true,
)]
#[allow(clippy::manual_non_exhaustive)]
pub(crate) struct Args {
#[command(subcommand)]
pub(crate) commands: Option<Subcommands>,
#[command(flatten)]
pub(crate) compile: CompileOpts,
}
#[derive(Subcommand)]
pub(crate) enum Subcommands {
#[cfg(feature = "lsp")]
Lsp(LspArgs),
MirOpt(MirOptArgs),
EvmOpt(EvmOptArgs),
}