partiri-cli 0.2.0

Partiri CLI — Deploy and manage services on Partiri Cloud
use inquire::Confirm;
use owo_colors::OwoColorize;

use crate::client::ApiClient;
use crate::config::PartiriConfig;
use crate::error::{CliError, Result};
use crate::output::{ctx, print_success};

pub fn run(client: &ApiClient, config: &PartiriConfig) -> Result<()> {
    let id = config.id_or_err()?;

    if !ctx().yes {
        if ctx().no_input {
            return Err(Box::new(
                CliError::new(
                    "validation",
                    "unpause requires confirmation. Pass --yes (or -y) to skip the prompt.",
                )
                .enriched(),
            ));
        }
        let confirmed = Confirm::new(&format!(
            "Are you sure you want to unpause service {}?",
            id.bold()
        ))
        .with_default(false)
        .prompt()
        .map_err(|_| {
            Box::new(CliError::new("cancelled", "Operation cancelled by user."))
                as crate::error::Error
        })?;

        if !confirmed {
            return Err(Box::new(CliError::new(
                "cancelled",
                "Operation cancelled by user.",
            )));
        }
    }

    client.unpause_service(id)?;

    print_success("Unpause job created.");

    Ok(())
}