1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use serde::{Deserialize, Serialize};
use structopt::StructOpt;

/// affirm command mode
#[derive(
    Clone, Debug, Deserialize, Eq, PartialEq, Serialize, strum::EnumString, strum::EnumVariantNames,
)]
#[strum(serialize_all = "kebab_case")]
pub enum AffirmMode {
    /// From block number
    Block,
    /// From raw json data
    Raw,
}

/// Affirm options
#[derive(Clone, Debug, Deserialize, Serialize, StructOpt)]
pub enum AffirmOpts {
    /// Do affirm
    Do {
        /// The mode of parameter
        #[structopt(long, default_value = "block")]
        mode: AffirmMode,
        /// The block number for ethereum
        #[structopt(long)]
        block: Option<u32>,
        /// Raw parcel json data * (not support now)
        #[structopt(long = "raw")]
        raw_json: Option<String>,
    },
    /// Show affirm state
    State,
}