2021-02-02 00:53:33 +03:00
|
|
|
use std::path::PathBuf;
|
2021-02-23 18:16:26 +03:00
|
|
|
use structopt::clap;
|
2021-01-31 02:54:23 +03:00
|
|
|
pub use structopt::StructOpt;
|
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)]
|
2021-02-02 00:53:33 +03:00
|
|
|
#[structopt(bin_name = "migra", name = "Migra")]
|
|
|
|
pub(crate) struct AppOpt {
|
|
|
|
#[structopt(short, long)]
|
|
|
|
pub config: Option<PathBuf>,
|
|
|
|
|
|
|
|
#[structopt(subcommand)]
|
|
|
|
pub command: Command,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
|
|
pub(crate) enum Command {
|
2021-01-31 02:54:23 +03:00
|
|
|
Init,
|
2021-02-02 00:53:33 +03:00
|
|
|
|
|
|
|
Apply(ApplyCommandOpt),
|
|
|
|
|
2021-02-03 01:03:56 +03:00
|
|
|
Make(MakeCommandOpt),
|
|
|
|
|
2021-02-02 00:53:33 +03:00
|
|
|
#[structopt(name = "list", visible_alias = "ls")]
|
|
|
|
List,
|
2021-02-02 00:55:41 +03:00
|
|
|
|
|
|
|
#[structopt(name = "upgrade", visible_alias = "up")]
|
|
|
|
Upgrade,
|
|
|
|
|
|
|
|
#[structopt(name = "downgrade", visible_alias = "down")]
|
|
|
|
Downgrade,
|
2021-02-23 18:16:26 +03:00
|
|
|
|
|
|
|
Completions(CompletionsShell),
|
2021-01-31 13:41:12 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)]
|
2021-02-02 00:53:33 +03:00
|
|
|
pub(crate) struct ApplyCommandOpt {
|
2021-01-31 13:41:12 +03:00
|
|
|
#[structopt(parse(from_str))]
|
2021-02-01 23:51:23 +03:00
|
|
|
pub file_name: String,
|
2021-01-31 02:54:23 +03:00
|
|
|
}
|
2021-02-03 01:03:56 +03:00
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
|
|
pub(crate) struct MakeCommandOpt {
|
|
|
|
#[structopt(parse(from_str))]
|
|
|
|
pub migration_name: String,
|
|
|
|
}
|
2021-02-23 18:16:26 +03:00
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)]
|
|
|
|
pub(crate) enum CompletionsShell {
|
|
|
|
Bash,
|
|
|
|
Fish,
|
|
|
|
Zsh,
|
|
|
|
PowerShell,
|
|
|
|
Elvish,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<CompletionsShell> for clap::Shell {
|
|
|
|
fn from(shell: CompletionsShell) -> Self {
|
|
|
|
match shell {
|
|
|
|
CompletionsShell::Bash => Self::Bash,
|
|
|
|
CompletionsShell::Fish => Self::Fish,
|
|
|
|
CompletionsShell::Zsh => Self::Zsh,
|
|
|
|
CompletionsShell::PowerShell => Self::PowerShell,
|
|
|
|
CompletionsShell::Elvish => Self::Elvish,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|