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)] 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;
}
};
}