mirror of
https://github.com/Drop-OSS/interactive-clap.git
synced 2026-07-20 23:44:51 -04:00
33 lines
1.5 KiB
Rust
33 lines
1.5 KiB
Rust
// 1) build an example: cargo build --example simple_enum
|
|
// 2) go to the `examples` folder: cd target/debug/examples
|
|
// 3) run an example: ./simple_enum (without parameters) => entered interactive mode
|
|
// ./simple_enum network => mode: Ok(Network)
|
|
// ./simple_enum offline => mode: Ok(Offline)
|
|
// To learn more about the parameters, use "help" flag: ./simple_enum --help
|
|
|
|
|
|
use dialoguer::{theme::ColorfulTheme, Select};
|
|
use strum::{EnumDiscriminants, EnumIter, EnumMessage, IntoEnumIterator};
|
|
|
|
#[derive(Debug, Clone, EnumDiscriminants, interactive_clap_derive::InteractiveClap)]
|
|
#[strum_discriminants(derive(EnumMessage, EnumIter))]
|
|
///To construct a transaction you will need to provide information about sender (signer) and receiver accounts, and actions that needs to be performed.
|
|
///Do you want to derive some information required for transaction construction automatically querying it online?
|
|
pub enum Mode {
|
|
/// Prepare and, optionally, submit a new transaction with online mode
|
|
#[strum_discriminants(strum(message = "Yes, I keep it simple"))]
|
|
Network,
|
|
/// Prepare and, optionally, submit a new transaction with offline mode
|
|
#[strum_discriminants(strum(
|
|
message = "No, I want to work in no-network (air-gapped) environment"
|
|
))]
|
|
Offline,
|
|
}
|
|
|
|
fn main() {
|
|
let cli_mode = Mode::try_parse().ok();
|
|
let context = (); // default: input_context = ()
|
|
let mode = Mode::from_cli(cli_mode, context);
|
|
println!("mode: {:?}", mode)
|
|
}
|