From 32bc0786a8023a3f47481fe7474c2954a3c214aa Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 20 Dec 2022 21:08:39 +0100 Subject: [PATCH] Support binary database in cli. --- src/bin/cli.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/bin/cli.rs b/src/bin/cli.rs index b8af38f..b470a5e 100644 --- a/src/bin/cli.rs +++ b/src/bin/cli.rs @@ -30,14 +30,27 @@ fn main() { } else { false }; + let safes = if args.get(1) == Some(&"--safes".to_string()) { + args = [vec![args[0].clone()], args[2..].to_vec()].concat(); + true + } else { + false + }; + if safes && csv { + println!("Options --safes and --csv cannot be used together."); + return; + } if args.len() < 4 { - println!("Usage: cli [--csv] [--dot ]"); - println!("Usage: cli [--csv] [--dot ]"); + println!("Usage: cli [--csv] [--safes] [--dot ]"); println!( - "Usage: cli [--csv] [--dot ]" + "Usage: cli [--csv] [--safes] [--dot ]" + ); + println!( + "Usage: cli [--csv] [--safes] [--dot ]" ); println!("Option --csv reads edges.dat in csv format instead of binary."); + println!("Option --safes reads a safes.dat file instead of an edges.dat file."); return; } let mut max_hops = None; @@ -57,10 +70,12 @@ fn main() { println!("Computing flow {from_str} -> {to_str} using {edges_file}"); let edges = (if csv { io::read_edges_csv(edges_file) + } else if safes { + io::import_from_safes_binary(edges_file).map(|db| db.edges().clone()) } else { io::read_edges_binary(edges_file) }) - .unwrap_or_else(|_| panic!("Error loading edges from file \"{edges_file}\".")); + .unwrap_or_else(|_| panic!("Error loading edges/safes from file \"{edges_file}\".")); println!("Read {} edges", edges.edge_count()); let (flow, transfers) = graph::compute_flow( &Address::from(from_str.as_str()),