diff --git a/substrate/core/cli/src/lib.rs b/substrate/core/cli/src/lib.rs index d3e7d2c569..3af64e0d38 100644 --- a/substrate/core/cli/src/lib.rs +++ b/substrate/core/cli/src/lib.rs @@ -60,6 +60,8 @@ use lazy_static::lazy_static; use futures::Future; +const MAX_NODE_NAME_LENGTH: usize = 32; + /// Executable version. Used to pass version information from the root crate. pub struct VersionInfo { /// Implemtation name. @@ -91,6 +93,19 @@ fn get_chain_key(cli: &SharedParams) -> String { } } +fn generate_node_name() -> String { + let result = loop { + let node_name = Generator::with_naming(Name::Numbered).next().unwrap(); + let count = node_name.chars().count(); + + if count < MAX_NODE_NAME_LENGTH { + break node_name + } + }; + + result +} + fn load_spec(cli: &SharedParams, factory: F) -> error::Result> where G: RuntimeGenesis, F: FnOnce(&str) -> Result>, String>, { @@ -121,7 +136,6 @@ fn create_input_err>(msg: T) -> error::Error { /// Check whether a node name is considered as valid fn is_node_name_valid(_name: &str) -> Result<(), &str> { - const MAX_NODE_NAME_LENGTH: usize = 32; let name = _name.to_string(); if name.chars().count() >= MAX_NODE_NAME_LENGTH { return Err("Node name too long"); @@ -284,7 +298,7 @@ where config.impl_version = version.version; config.name = match cli.name { - None => Generator::with_naming(Name::Numbered).next().unwrap(), + None => generate_node_name(), Some(name) => name, }; match is_node_name_valid(&config.name) {