use std::path::PathBuf;
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub(crate) enum FrontendArg {
React,
Vue,
}
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub(crate) enum OutputFormat {
Human,
Json,
}
#[derive(Debug, Clone, Eq, PartialEq)]
pub(crate) struct NewOptions {
pub(crate) destination: PathBuf,
pub(crate) frontend: FrontendArg,
pub(crate) no_db: bool,
}
#[derive(Debug, Clone, Eq, PartialEq)]
pub(crate) enum DbCommand {
Migrate,
Rollback { steps: Option<u32> },
Status,
Fresh { force: bool },
Reset { force: bool },
Refresh { force: bool },
Prepare,
PrepareCheck,
}
#[derive(Debug, Clone, Eq, PartialEq)]
pub(crate) struct MakeOptions {
pub(crate) kind: String,
pub(crate) name: String,
pub(crate) module: Option<String>,
}
#[derive(Debug, Clone, Eq, PartialEq)]
pub(crate) enum CliCommand {
New(NewOptions),
Dev,
Build,
Check(OutputFormat),
Doctor(OutputFormat),
Exposure(OutputFormat),
Routes(OutputFormat),
Modules(OutputFormat),
Services(OutputFormat),
Schedule(OutputFormat),
Run {
name: String,
arguments: Vec<String>,
},
Make(MakeOptions),
Script {
name: String,
arguments: Vec<String>,
},
Db(DbCommand),
}