ledger_tool/
main.rs

1use std::{
2    fs::{self, File},
3    path::PathBuf,
4};
5
6use reqwest::Url;
7
8use structopt::StructOpt;
9
10#[derive(StructOpt)]
11struct Args {
12    #[structopt(short, long)]
13    input: Option<PathBuf>,
14    #[structopt(long)]
15    url: Option<Url>,
16    #[structopt(short, long)]
17    output: PathBuf,
18}
19
20fn main() -> anyhow::Result<()> {
21    let Args { input, url, output } = Args::from_args();
22
23    let data = if let Some(input) = input {
24        fs::read(input)?
25    } else if let Some(url) = url {
26        reqwest::blocking::get(url)?.bytes()?.to_vec()
27    } else {
28        anyhow::bail!("must provide either `--input` or `--url`");
29    };
30
31    let daemon_json = serde_json::from_slice::<node::daemon_json::DaemonJson>(&data)?;
32
33    let prebuilt_config =
34        node::transition_frontier::genesis::PrebuiltGenesisConfig::try_from(daemon_json)?;
35
36    prebuilt_config.store(File::create(output)?)?;
37
38    Ok(())
39}