Skip to content

Commit

Permalink
Adder Parachain: Accept output file argument to export-genesis-* su…
Browse files Browse the repository at this point in the history
…bcommands (#2370)

This PR makes a small change the the adder parachain's CLI. It allows
the user to specify an output file explicitly when generating the
genesis wasm and head data.

Now we no longer have to rely on redirecting the output to a file at the
shell level. This change is nice because if you have any debugging lines
enabled, shell redirection does not work.

More to the point, this makes the adder parachain's CLI match the
cumulus collator's CLI. And that will allow tools like Zombienet (that
support both cumulus and the adder) to use the positional argument.

cc @pepoviola

---------

Co-authored-by: Joshy Orndorff <git-user-email.h0ly5@simplelogin.com>
Co-authored-by: Bastian Köcher <git@kchr.de>
  • Loading branch information
3 people authored Jan 20, 2024
1 parent a5370fb commit caa987d
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
13 changes: 11 additions & 2 deletions polkadot/parachain/test-parachains/adder/collator/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use clap::Parser;
use sc_cli::SubstrateCli;
use std::path::PathBuf;

/// Sub-commands supported by the collator.
#[derive(Debug, Parser)]
Expand All @@ -33,11 +34,19 @@ pub enum Subcommand {

/// Command for exporting the genesis head data of the parachain
#[derive(Debug, Parser)]
pub struct ExportGenesisHeadCommand {}
pub struct ExportGenesisHeadCommand {
/// Output file name or stdout if unspecified.
#[arg()]
pub output: Option<PathBuf>,
}

/// Command for exporting the genesis wasm file.
#[derive(Debug, Parser)]
pub struct ExportGenesisWasmCommand {}
pub struct ExportGenesisWasmCommand {
/// Output file name or stdout if unspecified.
#[arg()]
pub output: Option<PathBuf>,
}

#[allow(missing_docs)]
#[derive(Debug, Parser)]
Expand Down
26 changes: 22 additions & 4 deletions polkadot/parachain/test-parachains/adder/collator/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ use polkadot_node_subsystem::messages::{CollationGenerationMessage, CollatorProt
use polkadot_primitives::Id as ParaId;
use sc_cli::{Error as SubstrateCliError, SubstrateCli};
use sp_core::hexdisplay::HexDisplay;
use std::{
fs,
io::{self, Write},
};
use test_parachain_adder_collator::Collator;

/// The parachain ID to collate for in case it wasn't set explicitly through CLI.
Expand All @@ -34,15 +38,29 @@ fn main() -> Result<()> {
let cli = Cli::from_args();

match cli.subcommand {
Some(cli::Subcommand::ExportGenesisState(_params)) => {
Some(cli::Subcommand::ExportGenesisState(params)) => {
let collator = Collator::new();
println!("0x{:?}", HexDisplay::from(&collator.genesis_head()));
let output_buf =
format!("0x{:?}", HexDisplay::from(&collator.genesis_head())).into_bytes();

if let Some(output) = params.output {
std::fs::write(output, output_buf)?;
} else {
std::io::stdout().write_all(&output_buf)?;
}

Ok::<_, Error>(())
},
Some(cli::Subcommand::ExportGenesisWasm(_params)) => {
Some(cli::Subcommand::ExportGenesisWasm(params)) => {
let collator = Collator::new();
println!("0x{:?}", HexDisplay::from(&collator.validation_code()));
let output_buf =
format!("0x{:?}", HexDisplay::from(&collator.validation_code())).into_bytes();

if let Some(output) = params.output {
fs::write(output, output_buf)?;
} else {
io::stdout().write_all(&output_buf)?;
}

Ok(())
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ fn main() -> Result<()> {
Some(cli::Subcommand::ExportGenesisWasm(params)) => {
// We pass some dummy values for `pov_size` and `pvf_complexity` as these don't
// matter for `wasm` export.
let collator = Collator::default();
let output_buf =
format!("0x{:?}", HexDisplay::from(&Collator::default().validation_code()))
.into_bytes();
format!("0x{:?}", HexDisplay::from(&collator.validation_code())).into_bytes();

if let Some(output) = params.output {
fs::write(output, output_buf)?;
Expand Down

0 comments on commit caa987d

Please sign in to comment.