diff --git a/bin/utils/subkey/src/lib.rs b/bin/utils/subkey/src/lib.rs index bb89541d5b14e..15f7bf538c4b4 100644 --- a/bin/utils/subkey/src/lib.rs +++ b/bin/utils/subkey/src/lib.rs @@ -31,7 +31,8 @@ use sp_core::crypto::Ss58Codec; about = "Utility for generating and restoring with Substrate keys", )] pub enum Subkey { - /// Generate a random node libp2p key, save it to file and print its peer ID + /// Generate a random node libp2p key, save it to file or print it to stdout + /// and print its peer ID to stderr. GenerateNodeKey(GenerateNodeKeyCmd), /// Generate a random account diff --git a/client/cli/src/commands/generate_node_key.rs b/client/cli/src/commands/generate_node_key.rs index 197e0eb5d9034..ad292e4712d84 100644 --- a/client/cli/src/commands/generate_node_key.rs +++ b/client/cli/src/commands/generate_node_key.rs @@ -26,26 +26,31 @@ use libp2p::identity::{ed25519 as libp2p_ed25519, PublicKey}; #[derive(Debug, StructOpt)] #[structopt( name = "generate-node-key", - about = "Generate a random node libp2p key, save it to file and print its peer ID" + about = "Generate a random node libp2p key, save it to \ + file or print it to stdout and print its peer ID to stderr" )] pub struct GenerateNodeKeyCmd { /// Name of file to save secret key to. + /// + /// If not given, the secret key is printed to stdout. #[structopt(long)] - file: PathBuf, + file: Option, } impl GenerateNodeKeyCmd { /// Run the command pub fn run(&self) -> Result<(), Error> { - let file = &self.file; - let keypair = libp2p_ed25519::Keypair::generate(); let secret = keypair.secret(); let peer_id = PublicKey::Ed25519(keypair.public()).into_peer_id(); + let secret_hex = hex::encode(secret.as_ref()); - fs::write(file, hex::encode(secret.as_ref()))?; + match &self.file { + Some(file) => fs::write(file, secret_hex)?, + None => print!("{}", secret_hex), + } - println!("{}", peer_id); + eprintln!("{}", peer_id); Ok(()) } diff --git a/client/cli/src/commands/key.rs b/client/cli/src/commands/key.rs index 50142208b881d..930acd7925ac6 100644 --- a/client/cli/src/commands/key.rs +++ b/client/cli/src/commands/key.rs @@ -28,10 +28,11 @@ use super::{ generate_node_key::GenerateNodeKeyCmd, }; -/// key utilities for the cli. +/// Key utilities for the cli. #[derive(Debug, StructOpt)] pub enum KeySubcommand { - /// Generate a random node libp2p key, save it to file and print its peer ID + /// Generate a random node libp2p key, save it to file or print it to stdout + /// and print its peer ID to stderr. GenerateNodeKey(GenerateNodeKeyCmd), /// Generate a random account