diff --git a/substrate/utils/frame/benchmarking-cli/src/lib.rs b/substrate/utils/frame/benchmarking-cli/src/lib.rs index 011e97046bddc7c1d81e57f928fe674cbffff864..5e8e485c43b1bae06080b76b60134180b55909ea 100644 --- a/substrate/utils/frame/benchmarking-cli/src/lib.rs +++ b/substrate/utils/frame/benchmarking-cli/src/lib.rs @@ -14,13 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see <http://www.gnu.org/licenses/>. +use std::{fmt::Debug, path::PathBuf}; use sp_runtime::{BuildStorage, traits::{Block as BlockT, Header as HeaderT, NumberFor}}; use sc_client::StateMachine; use sc_cli::{ExecutionStrategy, WasmExecutionMethod, VersionInfo}; use sc_client_db::BenchmarkingState; use sc_service::{RuntimeGenesis, ChainSpecExtension, Configuration, ChainSpec}; use sc_executor::{NativeExecutor, NativeExecutionDispatch}; -use std::fmt::Debug; use codec::{Encode, Decode}; use frame_benchmarking::BenchmarkResults; @@ -168,14 +168,20 @@ impl BenchmarkCmd { &self, mut config: &mut Configuration<G, E>, spec_factory: impl FnOnce(&str) -> Result<Option<ChainSpec<G, E>>, String>, - version: &VersionInfo, + _version: &VersionInfo, ) -> sc_cli::Result<()> where G: RuntimeGenesis, E: ChainSpecExtension, { - self.shared_params.update_config(&mut config, spec_factory, version)?; - - // make sure to configure keystore + // Configure chain spec. + let chain_key = self.shared_params.chain.clone().unwrap_or("dev".into()); + let spec = match spec_factory(&chain_key)? { + Some(spec) => spec, + None => ChainSpec::from_json_file(PathBuf::from(chain_key))? + }; + config.chain_spec = Some(spec); + + // Make sure to configure keystore. config.use_in_memory_keystore()?; Ok(())