equanetwork-cli 0.0.4

The Equa Network command line interface
use anyhow::Result;

use crate::config::{Command, Config, NetworkCommand, VaultCommand};

mod helpers;
mod network_initialize;
mod network_swap;
mod permission_initialize;
mod program_initialize;
mod program_version;
mod show;
mod vault_initialize;
mod vault_liquidity;

pub fn handle(config: &Config) -> Result<()> {
    match &config.command {
        Command::Show => show::handle(config)?,
        Command::Program { command } => match command {
            crate::config::ProgramCommand::Initialize => program_initialize::handle(config)?,
            crate::config::ProgramCommand::Version => program_version::handle(config)?,
        },
        Command::Permission { .. } => permission_initialize::handle(config)?,
        Command::Network { command } => match command {
            NetworkCommand::Initialize { .. } => network_initialize::handle(config)?,
            NetworkCommand::Swap { .. } => network_swap::handle(config)?,
        },
        Command::Vault { command } => match command {
            VaultCommand::Initialize { .. } => vault_initialize::handle(config)?,
            VaultCommand::Deposit { .. } => vault_liquidity::handle_deposit(config)?,
            VaultCommand::Withdraw { .. } => vault_liquidity::handle_withdraw(config)?,
        },
    }
    Ok(())
}