zoi-rs 1.8.7

Universal Package Manager & Environment Setup Tool
Documentation
use crate::pkg::{self, transaction};
use crate::utils;
use anyhow::Result;

pub fn run(
    package_name: &str,
    yes: bool,
    plugin_manager: &crate::pkg::plugin::PluginManager,
) -> Result<()> {
    plugin_manager.trigger_hook("on_rollback", None)?;
    pkg::rollback::run(package_name, yes)
}

pub fn run_transaction_rollback(
    yes: bool,
    plugin_manager: &crate::pkg::plugin::PluginManager,
) -> Result<()> {
    if !utils::ask_for_confirmation(
        "This will roll back the last recorded transaction. Are you sure?",
        yes,
    ) {
        println!("Operation aborted.");
        return Ok(());
    }

    match transaction::get_last_transaction_id()? {
        Some(id) => {
            println!("Rolling back transaction {}...", id);
            plugin_manager.trigger_hook("on_rollback", None)?;
            transaction::rollback(&id)
        }
        None => {
            println!("No transactions found to roll back.");
            Ok(())
        }
    }
}