tracel-xtask 4.18.1

Reusable and Extensible xtask commands to manage repositories.
Documentation
use anyhow::Ok;
use tracel_xtask_utils::{
    cargo::ensure_cargo_crate_is_installed, endgroup, environment::Environment, group,
    process::run_process,
};

use crate::context::Context;

#[tracel_xtask_macros::declare_command_args(None, BumpSubCommand)]
pub struct BumpCmdArgs {}

pub fn handle_command(args: BumpCmdArgs, _env: Environment, _ctx: Context) -> anyhow::Result<()> {
    bump(&args.get_command())
}

fn bump(command: &BumpSubCommand) -> anyhow::Result<()> {
    group!("Bump version: {command}");
    ensure_cargo_crate_is_installed("cargo-edit", None, None, false)?;
    run_process(
        "cargo",
        &["set-version", "--bump", &command.to_string()],
        None,
        None,
        &format!("Error trying to bump {command} version"),
    )?;
    endgroup!();
    Ok(())
}