From f2cc3a06b9242d3d2a7a43e927ac4dd9a31efc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 7 Sep 2020 19:45:40 +0200 Subject: [PATCH] Make `--file` optional for `generate-node-key` This pr makes the `--file` argument optional to `generate-node-key`. If the argument is not given, the secret node key will be printed to `stdout`. The public node key will always be printed to `stderr`. --- bin/utils/subkey/src/lib.rs | 3 ++- client/cli/src/commands/generate_node_key.rs | 17 +++++++++++------ client/cli/src/commands/key.rs | 5 +++-- 3 files changed, 16 insertions(+), 9 deletions(-) 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