cargo_tangle/command/create/
types.rs1use clap::{Args, ValueEnum};
2
3#[derive(Debug, Clone, Args)]
4pub struct CreateArgs {
5 #[arg(short, long, value_name = "NAME", env = "NAME")]
7 pub name: String,
8
9 #[command(flatten)]
10 pub blueprint_type: BlueprintType,
11}
12
13#[derive(Debug, Clone, Args, Default)]
14#[group(required = false, multiple = false)]
15pub struct BlueprintType {
16 #[arg(long, conflicts_with = "eigenlayer")]
18 pub tangle: bool,
19
20 #[arg(long, value_name = "VARIANT", value_enum, num_args = 0..=1, default_missing_value = "bls")]
22 pub eigenlayer: Option<EigenlayerVariant>,
23}
24
25#[derive(Debug, Default, Clone, Copy, ValueEnum)]
26pub enum EigenlayerVariant {
27 #[default]
28 BLS,
29 ECDSA,
30}
31
32impl BlueprintType {
33 pub fn get_type(&self) -> Option<BlueprintVariant> {
34 if self.eigenlayer.is_some() {
35 self.eigenlayer.map(BlueprintVariant::Eigenlayer)
36 } else if self.tangle {
37 Some(BlueprintVariant::Tangle)
38 } else {
39 None
40 }
41 }
42}
43
44#[derive(Debug, Clone)]
45pub enum BlueprintVariant {
46 Tangle,
47 Eigenlayer(EigenlayerVariant),
48}