mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 21:17:56 +00:00
8fa496b866
* new workflow and adjust node builder * fix examples by fixing artifacts script * use-nodes instead of use-substrate * update yamls * build polkadot * remove the on-push trigger again, now that polkadot built in the CI * add default implementation again
80 lines
2.8 KiB
Rust
80 lines
2.8 KiB
Rust
use std::{
|
|
fs::File,
|
|
process::{Command, Stdio},
|
|
};
|
|
|
|
use substrate_runner::SubstrateNode;
|
|
|
|
/// A Script to generate artifacts that are used in the integration tests.
|
|
///
|
|
/// Run with `cargo run --bin artifacts` from the root of the repository.
|
|
fn main() {
|
|
let mut node_builder = SubstrateNode::builder();
|
|
node_builder.polkadot();
|
|
|
|
// Spawn the node and retrieve a ws URL to it:
|
|
let proc = node_builder
|
|
.spawn()
|
|
.map_err(|e| e.to_string())
|
|
.expect("Could not spawn node");
|
|
let node_url = format!("ws://127.0.0.1:{}", proc.ws_port());
|
|
|
|
// Get the full metadata from the spawned substrate node
|
|
run_cmd(
|
|
&format!("cargo run --bin subxt metadata --version 15 --url {node_url}"),
|
|
Some("artifacts/polkadot_metadata_full.scale"),
|
|
);
|
|
|
|
// Use it to generate polkadot.rs
|
|
run_cmd(
|
|
"cargo run --bin subxt codegen --file artifacts/polkadot_metadata_full.scale",
|
|
Some("testing/integration-tests/src/full_client/codegen/polkadot.rs"),
|
|
);
|
|
run_cmd(
|
|
"rustfmt testing/integration-tests/src/full_client/codegen/polkadot.rs",
|
|
None,
|
|
);
|
|
|
|
// Generate a metadata file that only contains a few pallets that we need for our examples.
|
|
run_cmd(
|
|
"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets Balances,Staking,System,Multisig,Timestamp,ParaInherent",
|
|
Some("artifacts/polkadot_metadata_small.scale"),
|
|
);
|
|
|
|
// Generate a metadata file that contains no pallets
|
|
run_cmd(
|
|
"cargo run --bin subxt metadata --file artifacts/polkadot_metadata_full.scale --pallets \"\"",
|
|
Some("artifacts/polkadot_metadata_tiny.scale"),
|
|
);
|
|
|
|
// Generate a metadata file that only contains some custom metadata
|
|
run_cmd(
|
|
"cargo run --bin generate-custom-metadata",
|
|
Some("artifacts/metadata_with_custom_values.scale"),
|
|
);
|
|
|
|
// Generate the polkadot chain spec.
|
|
run_cmd("cargo run --features chain-spec-pruning --bin subxt chain-spec --url wss://rpc.polkadot.io:443 --output-file artifacts/demo_chain_specs/polkadot.json --state-root-hash --remove-substitutes", None);
|
|
}
|
|
|
|
fn run_cmd(cmd: &str, out_path: Option<&str>) {
|
|
println!("Running Command: {cmd}");
|
|
// Note: simple space splitting, no fancy parsing of e.g. quotes surrounding whitespace.
|
|
let mut parts = cmd.split(' ');
|
|
let program = parts.next().expect("no program in command string");
|
|
let mut command = Command::new(program);
|
|
for e in parts {
|
|
command.arg(e);
|
|
}
|
|
|
|
if let Some(out_path) = out_path {
|
|
let file = File::create(out_path).unwrap();
|
|
command.stdout(Stdio::from(file));
|
|
}
|
|
|
|
let status = command.spawn().unwrap().wait().unwrap();
|
|
if !status.success() {
|
|
panic!("Command `{cmd}` failed with status: {status}")
|
|
}
|
|
}
|