diff --git a/client/cli/src/commands/export_blocks_cmd.rs b/client/cli/src/commands/export_blocks_cmd.rs index cdfa463c6d561..21195cccd4664 100644 --- a/client/cli/src/commands/export_blocks_cmd.rs +++ b/client/cli/src/commands/export_blocks_cmd.rs @@ -50,9 +50,9 @@ pub struct ExportBlocksCmd { #[structopt(long = "to", value_name = "BLOCK")] pub to: Option, - /// Use JSON output rather than binary. - #[structopt(long = "json")] - pub json: bool, + /// Use binary output rather than JSON. + #[structopt(long = "binary", value_name = "BOOL", parse(try_from_str), default_value("false"))] + pub binary: bool, #[allow(missing_docs)] #[structopt(flatten)] @@ -85,7 +85,7 @@ impl ExportBlocksCmd { let from = self.from.as_ref().and_then(|f| f.parse().ok()).unwrap_or(1); let to = self.to.as_ref().and_then(|t| t.parse().ok()); - let json = self.json; + let binary = self.binary; let file: Box = match &self.output { Some(filename) => Box::new(fs::File::create(filename)?), @@ -93,7 +93,7 @@ impl ExportBlocksCmd { }; run_until_exit(config, |config| { - Ok(builder(config)?.export_blocks(file, from.into(), to, json)) + Ok(builder(config)?.export_blocks(file, from.into(), to, binary)) }) } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 8c85c38b18844..e5e4e132f9cd9 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -742,7 +742,7 @@ pub trait ServiceBuilderCommand { output: impl Write + 'static, from: NumberFor, to: Option>, - json: bool + binary: bool ) -> Pin>>>; /// Performs a revert of `blocks` blocks. diff --git a/client/service/src/chain_ops.rs b/client/service/src/chain_ops.rs index a0724f3e1decc..03db9232a1051 100644 --- a/client/service/src/chain_ops.rs +++ b/client/service/src/chain_ops.rs @@ -203,7 +203,7 @@ impl< mut output: impl Write + 'static, from: NumberFor, to: Option>, - json: bool + binary: bool ) -> Pin>>> { let client = self.client; let mut block = from; @@ -230,7 +230,7 @@ impl< if !wrote_header { info!("Exporting blocks from #{} to #{}", block, last); - if !json { + if binary { let last_: u64 = last.saturated_into::(); let block_: u64 = block.saturated_into::(); let len: u64 = last_ - block_ + 1; @@ -241,13 +241,13 @@ impl< match client.block(&BlockId::number(block))? { Some(block) => { - if json { + if binary { + output.write_all(&block.encode())?; + } else { serde_json::to_writer(&mut output, &block) .map_err(|e| format!("Error writing JSON: {}", e))?; - } else { - output.write_all(&block.encode())?; } - }, + }, // Reached end of the chain. None => return std::task::Poll::Ready(Ok(())), }