Skip to content
Snippets Groups Projects
Commit d7e4aa41 authored by pscott's avatar pscott Committed by GitHub
Browse files

Make export blocks default to json on stdout (#5090)

* Make export blocks default to json on stdout

* Multiline instead of single line to stay under 100 cols

* Change --json flag to --binary, defaulting to json
parent 9a925faf
No related merge requests found
......@@ -50,9 +50,9 @@ pub struct ExportBlocksCmd {
#[structopt(long = "to", value_name = "BLOCK")]
pub to: Option<BlockNumber>,
/// 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<dyn io::Write> = 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))
})
}
......
......@@ -742,7 +742,7 @@ pub trait ServiceBuilderCommand {
output: impl Write + 'static,
from: NumberFor<Self::Block>,
to: Option<NumberFor<Self::Block>>,
json: bool
binary: bool
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>>;
/// Performs a revert of `blocks` blocks.
......
......@@ -203,7 +203,7 @@ impl<
mut output: impl Write + 'static,
from: NumberFor<TBl>,
to: Option<NumberFor<TBl>>,
json: bool
binary: bool
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>> {
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::<u64>();
let block_: u64 = block.saturated_into::<u64>();
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(())),
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment