1use super::{
10 generate::GenerateCmd, generate_node_key::GenerateNodeKeyCmd, insert_key::InsertKeyCmd,
11 inspect_key::InspectKeyCmd, inspect_node_key::InspectNodeKeyCmd,
12};
13use crate::{Error, SubstrateCli};
14
15#[derive(Debug, clap::Subcommand)]
17pub enum KeySubcommand {
18 GenerateNodeKey(GenerateNodeKeyCmd),
21
22 Generate(GenerateCmd),
24
25 Inspect(InspectKeyCmd),
27
28 InspectNodeKey(InspectNodeKeyCmd),
30
31 Insert(InsertKeyCmd),
33}
34
35impl KeySubcommand {
36 pub fn run<C: SubstrateCli>(&self, cli: &C) -> Result<(), Error> {
38 match self {
39 KeySubcommand::GenerateNodeKey(cmd) => {
40 let chain_spec = cli.load_spec(cmd.chain.as_deref().unwrap_or(""))?;
41 cmd.run(chain_spec.id(), &C::executable_name())
42 },
43 KeySubcommand::Generate(cmd) => cmd.run(),
44 KeySubcommand::Inspect(cmd) => cmd.run(),
45 KeySubcommand::Insert(cmd) => cmd.run(cli),
46 KeySubcommand::InspectNodeKey(cmd) => cmd.run(),
47 }
48 }
49}