From 2bd0c77bdc07ff2cb573d484f75e3955ec1f42ca Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Mon, 3 Jun 2019 00:33:49 -0400 Subject: [PATCH] support a different source db than dest for transfer command --- src/main.rs | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index b1ed7ce..dbdfc9e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,13 +21,14 @@ Usage: foil set [--namespace=] [--db=] foil get [--namespace=] [--db=] foil list [--namespace=] [--db=] - foil transfer [--namespace=] [--db=] + foil transfer [--namespace=] [--db=] [--src=] foil dump [--db=] foil generate foil (-h | --help) Options: --db= The path to the sqlite database [default: db.sqlite3]. + --src= The path to the old sqlite database [default: db.sqlite3]. -n DB, --namespace= An identifier for a group of secrets [default: main] -h, --help Show this screen. --version Show version. @@ -42,6 +43,7 @@ struct Args { cmd_transfer: bool, cmd_dump: bool, flag_db: Option, + flag_src: Option, flag_namespace: String, arg_spec: Option, } @@ -156,8 +158,14 @@ fn dump(mut db_conn: db::DbHandle, master_key: [u8; 32]) { } } -fn transfer(mut db_conn: db::DbHandle, master_key: [u8; 32], namespace: &str) { - for account in db_conn.list_accounts(master_key).into_iter() { +fn transfer( + mut db_conn_src: db::DbHandle, + mut db_conn_dest: db::DbHandle, + master_key_src: [u8; 32], + master_key_dest: [u8; 32], + namespace: &str, +) { + for account in db_conn_src.list_accounts(master_key_src).into_iter() { let new_note = db::Note { id: 0, namespace: namespace.to_string(), @@ -168,7 +176,7 @@ fn transfer(mut db_conn: db::DbHandle, master_key: [u8; 32], namespace: &str) { account.user, account.password ), }; - db_conn.write_note(master_key, new_note); + db_conn_dest.write_note(master_key_dest, new_note); } } @@ -195,7 +203,15 @@ fn main() -> Result<(), Box> { } else if args.cmd_list { list(db_conn, master_key, &args.flag_namespace); } else if args.cmd_transfer { - transfer(db_conn, master_key, &args.flag_namespace); + let mut db_conn_src: db::DbHandle = db::DbHandle::new(&args.flag_src); + let master_key_src: [u8; 32] = get_master_key(&mut db_conn_src); + transfer( + db_conn_src, + db_conn, + master_key_src, + master_key, + &args.flag_namespace, + ); } else if args.cmd_dump { dump(db_conn, master_key); }