use anyhow::Error;
use clap::ArgMatches;
use crate::common::app_context::AppContext;
use crate::dispatch::upgrade;
pub async fn handle_upgrade(
cli_upgrade: &ArgMatches,
_ctx: &AppContext<'_>,
) -> Result<(), Error> {
let check_only = cli_upgrade.get_flag("check");
let dry_run = cli_upgrade.get_flag("dry-run");
let assume_yes = cli_upgrade.get_flag("assume-yes");
let output_owned: Option<String> =
cli_upgrade.get_one::<String>("output").cloned();
tokio::task::spawn_blocking(move || {
upgrade::exec(check_only, dry_run, assume_yes, output_owned.as_deref())
})
.await
.map_err(|e| anyhow::anyhow!("upgrade task panicked: {e}"))?
}