diff --git a/src/bin/bridgedb.rs b/src/bin/bridgedb.rs index 30be0d9..9c96aed 100644 --- a/src/bin/bridgedb.rs +++ b/src/bin/bridgedb.rs @@ -1,14 +1,25 @@ use lox::BridgeDb; use std::fs::File; use std::io::Write; +use std::path::Path; fn main() { - // create new bridgedb (implicitly generates keys) - let bridgedb = BridgeDb::new(); + let bridgedb_outfile_name = "bridgedb.json"; + + // If bridgedb has already been created, recreate it from file. + // Otherwise, create new bridgedb. + let bridgedb = if Path::new(bridgedb_outfile_name).exists() { + // read in file + let bridgedb_infile = File::open(bridgedb_outfile_name).unwrap(); + serde_json::from_reader(bridgedb_infile).unwrap() + } else { + // create new bridgedb (implicitly generates keys) + BridgeDb::new() + }; // output full serialized bridgedb let mut bridgedb_outfile = - File::create("bridgedb.json").expect("Failed to create bridgedb.json"); + File::create(bridgedb_outfile_name).expect("Failed to create bridgedb.json"); let bridgedb_outfile_json = serde_json::to_string(&bridgedb).unwrap(); write!(bridgedb_outfile, "{}", bridgedb_outfile_json) .expect("Failed to write to bridgedb.json");