pgdo-cli 0.5.7

The convenience of SQLite – but with PostgreSQL (Command-line application)
mod backup;
mod clone;
mod exec;
mod restore;
mod runtimes;
mod shell;

use super::ExitResult;
pub(crate) use shell::Shell as Default;

#[derive(clap::Subcommand)]
pub(crate) enum Command {
    #[clap(display_order = 1)]
    Shell(shell::Shell),

    #[clap(display_order = 2)]
    Exec(exec::Exec),

    #[clap(display_order = 3)]
    Clone(clone::Clone),

    #[clap(display_order = 4)]
    Backup(backup::Backup),

    #[clap(name = "backup:tools", hide = true)]
    BackupTools(backup::BackupTools),

    #[clap(display_order = 5)]
    Restore(restore::Restore),

    #[clap(display_order = 6)]
    Runtimes(runtimes::Runtimes),
}

impl Command {
    pub(crate) fn invoke(self) -> ExitResult {
        match self {
            Self::Shell(shell) => shell.invoke(),
            Self::Exec(exec) => exec.invoke(),
            Self::Clone(clone) => clone.invoke(),
            Self::Backup(backup) => backup.invoke(),
            Self::BackupTools(tools) => tools.invoke(),
            Self::Restore(restore) => restore.invoke(),
            Self::Runtimes(runtimes) => runtimes.invoke(),
        }
    }
}