mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 07:47:57 +00:00
Support build-spec for other chains than Polkadot (#1567)
* Support `build-spec` for other chains than Polkadot The problem when building a chain specification is that you require the native runtime to parse the json file (assuming the chain spec is not raw yet). Before this pr we could only overwrite the native runtime when running the node using `force_*`. This pr now adds support to load the native runtime when the filename starts with the name of the chain. So, when usng `build-spec --chain rococo-something-else.jon` it will use the rococo native runtime to load the chain spec. * Apply suggestions from code review Co-authored-by: Andronik Ordian <write@reusable.software> Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
@@ -68,13 +68,25 @@ impl SubstrateCli for Cli {
|
||||
"rococo-staging" => Box::new(service::chain_spec::rococo_staging_testnet_config()?),
|
||||
"rococo-local" => Box::new(service::chain_spec::rococo_local_testnet_config()?),
|
||||
"rococo" => Box::new(service::chain_spec::rococo_config()?),
|
||||
path if self.run.force_kusama => {
|
||||
Box::new(service::KusamaChainSpec::from_json_file(std::path::PathBuf::from(path))?)
|
||||
path => {
|
||||
let path = std::path::PathBuf::from(path);
|
||||
|
||||
let starts_with = |prefix: &str| {
|
||||
path.file_name().map(|f| f.to_str().map(|s| s.starts_with(&prefix))).flatten().unwrap_or(false)
|
||||
};
|
||||
|
||||
// When `force_*` is given or the file name starts with the name of one of the known chains,
|
||||
// we use the chain spec for the specific chain.
|
||||
if self.run.force_rococo || starts_with("rococo") {
|
||||
Box::new(service::RococoChainSpec::from_json_file(path)?)
|
||||
} else if self.run.force_kusama || starts_with("kusama") {
|
||||
Box::new(service::KusamaChainSpec::from_json_file(path)?)
|
||||
} else if self.run.force_westend || starts_with("westend") {
|
||||
Box::new(service::WestendChainSpec::from_json_file(path)?)
|
||||
} else {
|
||||
Box::new(service::PolkadotChainSpec::from_json_file(path)?)
|
||||
}
|
||||
},
|
||||
path if self.run.force_westend => {
|
||||
Box::new(service::WestendChainSpec::from_json_file(std::path::PathBuf::from(path))?)
|
||||
},
|
||||
path => Box::new(service::PolkadotChainSpec::from_json_file(std::path::PathBuf::from(path))?),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -83,6 +95,8 @@ impl SubstrateCli for Cli {
|
||||
&service::kusama_runtime::VERSION
|
||||
} else if spec.is_westend() {
|
||||
&service::westend_runtime::VERSION
|
||||
} else if spec.is_rococo() {
|
||||
&service::rococo_runtime::VERSION
|
||||
} else {
|
||||
&service::polkadot_runtime::VERSION
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user