From 24c531cf7bcfbac5edfde5b90f0a08103feb5fe5 Mon Sep 17 00:00:00 2001 From: jkcomment Date: Tue, 29 Jan 2019 20:46:18 +0900 Subject: [PATCH] Fix generate node name with less then 32 characters (#1596) * fix generate node name with less then 32 characters * refactor generate_node_name --- substrate/core/cli/src/lib.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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) {