From 6800ff188259766ad688448e1d325954fd28399e Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Sat, 4 Aug 2018 14:31:12 -0700 Subject: [PATCH] solana-ledger-tool initial commit does nothing but convert from random-access ledger to json --- Cargo.toml | 4 ++++ src/bin/ledger-tool.rs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/bin/ledger-tool.rs diff --git a/Cargo.toml b/Cargo.toml index 17100f557c..c7f610cb7e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,10 @@ path = "src/bin/wallet.rs" name = "solana-fullnode" path = "src/bin/fullnode.rs" +[[bin]] +name = "solana-ledger-tool" +path = "src/bin/ledger-tool.rs" + [[bin]] name = "solana-keygen" path = "src/bin/keygen.rs" diff --git a/src/bin/ledger-tool.rs b/src/bin/ledger-tool.rs new file mode 100644 index 0000000000..6454eb2e82 --- /dev/null +++ b/src/bin/ledger-tool.rs @@ -0,0 +1,31 @@ +extern crate clap; +extern crate serde_json; +extern crate solana; + +use clap::{App, Arg}; +use solana::ledger::read_ledger; +use std::io::{stdout, Write}; + +fn main() { + let matches = App::new("ledger-view") + .arg( + Arg::with_name("ledger") + .short("l") + .long("ledger") + .value_name("DIR") + .takes_value(true) + .required(true) + .help("use DIR for ledger location"), + ) + .get_matches(); + + let ledger_path = matches.value_of("ledger").unwrap(); + + let entries = read_ledger(ledger_path).expect("opening ledger"); + + for entry in entries { + let entry = entry.unwrap(); + serde_json::to_writer(stdout(), &entry).expect("serialize"); + stdout().write(b"\n").expect("newline"); + } +}