tapedrive-cli 0.1.9

Your data, permanently recorded — uncensorable, uneditable, and here for good.
use anyhow::Result;
use dialoguer::{theme::ColorfulTheme, Confirm};
use solana_client::nonblocking::rpc_client::RpcClient;
use solana_sdk::signature::Keypair;

use crate::cli::{Cli, Commands};
use crate::log;

pub async fn handle_admin_commands(cli: Cli, client: RpcClient, payer: Keypair) -> Result<()> {

    log::print_divider();
    let proceed = Confirm::with_theme(&ColorfulTheme::default())
        .with_prompt("→ Are you sure?")
        .default(false)
        .interact()
        .map_err(|e| anyhow::anyhow!("Failed to get user input: {}", e))?;
    if !proceed {
        log::print_error("Write operation cancelled");
        return Ok(());
    }

    match cli.command {
        Commands::Initialize {} => {
            let signature = tape_client::initialize(&client, &payer).await?;
            log::print_section_header("Program Initialized");
            log::print_message(&format!("Signature: {}", signature));
            log::print_divider();
        }

        Commands::Epoch {} => {
            let signature = tape_client::advance(&client, &payer).await?;
            log::print_section_header("Epoch Advanced");
            log::print_message(&format!("Signature: {}", signature));
            log::print_divider();
        }

        _ => {}
    }
    Ok(())
}