mind_sdk_cli 0.1.2

Mind Network Rust SDK
Documentation
pub mod result;
pub use result::*;

#[derive(clap::Parser, Clone, Debug)]
#[command(author = "Mind Network", version = "0.1.0", about = "Mind Network Cli", long_about = None)]
#[command(propagate_version = true)]
pub struct Cli {
    #[arg(long, value_enum, default_value_t = CliChainMode::Testnet, required = true)]
    pub chain_mode: CliChainMode,

    #[arg(long, value_enum, default_value_t = CliHost::Remote, required = true)]
    pub host: CliHost,

    #[arg(long, value_enum, default_value_t = CliConfig::File, required = true)]
    pub config_source: CliConfig,

    #[arg(long, value_enum, default_value_t = CliLogLevel::Info)] //, rename_all = "UPPER")]
    /// control level of print, useful for debug, default is info
    pub log_level: CliLogLevel,

    #[arg(long, value_enum, default_value_t = CliRunMode::Once)]
    pub run_mode: CliRunMode,

    #[arg(long)]
    pub node_config_file: Option<String>,

    #[arg(long)]
    pub hot_wallet_private_key: Option<String>,
    #[arg(long)]
    pub vote: Option<u128>,

    #[arg(long)]
    pub cluster_size: Option<u64>,

    #[arg(long)]
    pub new_size: Option<u128>,

    #[arg(long)]
    pub voter_wallet_address: Option<String>,

    #[arg(long)]
    pub hot_wallet_address: Option<String>,

    #[arg(long)]
    pub db_type: Option<String>,

    #[arg(long)]
    pub from_block_number: Option<u64>,

    #[arg(long)]
    pub fcn_wallet_private_key: Option<String>,

    #[arg(long)]
    pub min_gas: Option<u64>,
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#[derive(clap::ValueEnum, Clone, Debug)]
pub enum CliRunMode {
    Once,
    Loop,
}

#[derive(clap::ValueEnum, Clone, Debug)]
pub enum CliChainMode {
    Testnet,
    Mainnet,
}

#[derive(clap::ValueEnum, Clone, Debug)]
pub enum CliConfig {
    File,
    Db,
}

#[derive(clap::ValueEnum, Clone, Debug)]
pub enum CliHost {
    Local,
    Remote,
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#[derive(clap::ValueEnum, serde::Serialize, serde::Deserialize, Clone, Debug)]
pub enum CliLogLevel {
    Debug,
    Info,
    Warn,
    Error,
}

pub fn get_cli_log_level(log_level: CliLogLevel) -> log::LevelFilter {
    match log_level {
        crate::CliLogLevel::Debug => {
            return log::LevelFilter::Debug;
        }
        crate::CliLogLevel::Info => {
            return log::LevelFilter::Info;
        }
        crate::CliLogLevel::Warn => {
            return log::LevelFilter::Warn;
        }
        crate::CliLogLevel::Error => {
            return log::LevelFilter::Error;
        }
    };
}