mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-23 15:25:49 +00:00
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
This commit is contained in:
@@ -50,9 +50,9 @@ pub struct ExportBlocksCmd {
|
|||||||
#[structopt(long = "to", value_name = "BLOCK")]
|
#[structopt(long = "to", value_name = "BLOCK")]
|
||||||
pub to: Option<BlockNumber>,
|
pub to: Option<BlockNumber>,
|
||||||
|
|
||||||
/// Use JSON output rather than binary.
|
/// Use binary output rather than JSON.
|
||||||
#[structopt(long = "json")]
|
#[structopt(long = "binary", value_name = "BOOL", parse(try_from_str), default_value("false"))]
|
||||||
pub json: bool,
|
pub binary: bool,
|
||||||
|
|
||||||
#[allow(missing_docs)]
|
#[allow(missing_docs)]
|
||||||
#[structopt(flatten)]
|
#[structopt(flatten)]
|
||||||
@@ -85,7 +85,7 @@ impl ExportBlocksCmd {
|
|||||||
let from = self.from.as_ref().and_then(|f| f.parse().ok()).unwrap_or(1);
|
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 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 {
|
let file: Box<dyn io::Write> = match &self.output {
|
||||||
Some(filename) => Box::new(fs::File::create(filename)?),
|
Some(filename) => Box::new(fs::File::create(filename)?),
|
||||||
@@ -93,7 +93,7 @@ impl ExportBlocksCmd {
|
|||||||
};
|
};
|
||||||
|
|
||||||
run_until_exit(config, |config| {
|
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,
|
output: impl Write + 'static,
|
||||||
from: NumberFor<Self::Block>,
|
from: NumberFor<Self::Block>,
|
||||||
to: Option<NumberFor<Self::Block>>,
|
to: Option<NumberFor<Self::Block>>,
|
||||||
json: bool
|
binary: bool
|
||||||
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>>;
|
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>>;
|
||||||
|
|
||||||
/// Performs a revert of `blocks` blocks.
|
/// Performs a revert of `blocks` blocks.
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ impl<
|
|||||||
mut output: impl Write + 'static,
|
mut output: impl Write + 'static,
|
||||||
from: NumberFor<TBl>,
|
from: NumberFor<TBl>,
|
||||||
to: Option<NumberFor<TBl>>,
|
to: Option<NumberFor<TBl>>,
|
||||||
json: bool
|
binary: bool
|
||||||
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>> {
|
) -> Pin<Box<dyn Future<Output = Result<(), Error>>>> {
|
||||||
let client = self.client;
|
let client = self.client;
|
||||||
let mut block = from;
|
let mut block = from;
|
||||||
@@ -230,7 +230,7 @@ impl<
|
|||||||
|
|
||||||
if !wrote_header {
|
if !wrote_header {
|
||||||
info!("Exporting blocks from #{} to #{}", block, last);
|
info!("Exporting blocks from #{} to #{}", block, last);
|
||||||
if !json {
|
if binary {
|
||||||
let last_: u64 = last.saturated_into::<u64>();
|
let last_: u64 = last.saturated_into::<u64>();
|
||||||
let block_: u64 = block.saturated_into::<u64>();
|
let block_: u64 = block.saturated_into::<u64>();
|
||||||
let len: u64 = last_ - block_ + 1;
|
let len: u64 = last_ - block_ + 1;
|
||||||
@@ -241,13 +241,13 @@ impl<
|
|||||||
|
|
||||||
match client.block(&BlockId::number(block))? {
|
match client.block(&BlockId::number(block))? {
|
||||||
Some(block) => {
|
Some(block) => {
|
||||||
if json {
|
if binary {
|
||||||
|
output.write_all(&block.encode())?;
|
||||||
|
} else {
|
||||||
serde_json::to_writer(&mut output, &block)
|
serde_json::to_writer(&mut output, &block)
|
||||||
.map_err(|e| format!("Error writing JSON: {}", e))?;
|
.map_err(|e| format!("Error writing JSON: {}", e))?;
|
||||||
} else {
|
|
||||||
output.write_all(&block.encode())?;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Reached end of the chain.
|
// Reached end of the chain.
|
||||||
None => return std::task::Poll::Ready(Ok(())),
|
None => return std::task::Poll::Ready(Ok(())),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user