use crate::cli::{Cli, Commands, DeployCommand};
use crate::db::run_db_command;
use crate::dev::run_dev;
use crate::gateway::run_gateway_command;
use crate::service::run_service_command;
use crate::service_local::setup_current_service;
use crate::util::{Result, make_vars, repo_root, run_cmd, run_make};
pub(crate) fn run_cli(cli: Cli) -> Result<()> {
match cli.command {
Commands::Service { command } => run_service_command(command),
Commands::Gateway { command } => run_gateway_command(command),
Commands::Db { command } => run_db_command(command),
Commands::Setup(args) => setup_current_service(&args.vars),
Commands::Dev { command } => run_dev(command),
Commands::Sync => run_sync(),
Commands::Release(args) => run_release(&args.vars),
Commands::ReleaseSync(args) => run_release_sync(&args.vars),
Commands::Deploy { command } => run_deploy_command(command),
}
}
fn run_deploy_command(command: DeployCommand) -> Result<()> {
match command {
DeployCommand::Kubernetes(args) => {
run_sync()?;
run_make(
&repo_root().join("devops"),
"deploy-kubernetes",
&make_vars(&args.vars),
)
}
DeployCommand::Docker(args) => run_make(
&repo_root().join("devops"),
"deploy-docker",
&make_vars(&args.vars),
),
DeployCommand::Migrations(args) => run_make(
&repo_root().join("devops"),
"apply-migrations",
&make_vars(&args.vars),
),
DeployCommand::ObservabilityUp(args) => run_make(
&repo_root().join("devops"),
"observability-full-up",
&make_vars(&args.vars),
),
DeployCommand::ObservabilityDown(args) => run_make(
&repo_root().join("devops"),
"observability-full-down",
&make_vars(&args.vars),
),
DeployCommand::BackupNow(args) => run_make(
&repo_root().join("devops"),
"backup-now",
&make_vars(&args.vars),
),
DeployCommand::InstallBackupCron(args) => run_make(
&repo_root().join("devops"),
"install-backup-cron",
&make_vars(&args.vars),
),
DeployCommand::ReleaseSync(args) => run_release_sync(&args.vars),
DeployCommand::ReloadCaddy(args) => run_make(
&repo_root().join("devops"),
"reload-caddy",
&make_vars(&args.vars),
),
DeployCommand::RestartCdn(args) => run_make(
&repo_root().join("devops"),
"restart-cdn",
&make_vars(&args.vars),
),
DeployCommand::Recreate(args) => run_make(
&repo_root().join("devops"),
"recreate",
&make_vars(&args.vars),
),
}
}
fn run_sync() -> Result<()> {
run_cmd(
&repo_root(),
"devops/droplet/scripts/sync-service-assets.sh",
&[],
)
}
fn run_release(args: &[String]) -> Result<()> {
run_make(&repo_root().join("devops"), "release", &make_vars(args))
}
fn run_release_sync(args: &[String]) -> Result<()> {
run_make(
&repo_root().join("devops"),
"release-sync",
&make_vars(args),
)
}