support a different source db than dest for transfer command
This commit is contained in:
parent
d9fd4be5d7
commit
2bd0c77bdc
26
src/main.rs
26
src/main.rs
@ -21,13 +21,14 @@ Usage:
|
|||||||
foil set [--namespace=<ns>] [--db=<db>]
|
foil set [--namespace=<ns>] [--db=<db>]
|
||||||
foil get [--namespace=<ns>] [--db=<db>]
|
foil get [--namespace=<ns>] [--db=<db>]
|
||||||
foil list [--namespace=<ns>] [--db=<db>]
|
foil list [--namespace=<ns>] [--db=<db>]
|
||||||
foil transfer [--namespace=<ns>] [--db=<db>]
|
foil transfer [--namespace=<ns>] [--db=<db>] [--src=<db>]
|
||||||
foil dump [--db=<db>]
|
foil dump [--db=<db>]
|
||||||
foil generate <spec>
|
foil generate <spec>
|
||||||
foil (-h | --help)
|
foil (-h | --help)
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--db=<db> The path to the sqlite database [default: db.sqlite3].
|
--db=<db> The path to the sqlite database [default: db.sqlite3].
|
||||||
|
--src=<db> The path to the old sqlite database [default: db.sqlite3].
|
||||||
-n DB, --namespace=<db> An identifier for a group of secrets [default: main]
|
-n DB, --namespace=<db> An identifier for a group of secrets [default: main]
|
||||||
-h, --help Show this screen.
|
-h, --help Show this screen.
|
||||||
--version Show version.
|
--version Show version.
|
||||||
@ -42,6 +43,7 @@ struct Args {
|
|||||||
cmd_transfer: bool,
|
cmd_transfer: bool,
|
||||||
cmd_dump: bool,
|
cmd_dump: bool,
|
||||||
flag_db: Option<String>,
|
flag_db: Option<String>,
|
||||||
|
flag_src: Option<String>,
|
||||||
flag_namespace: String,
|
flag_namespace: String,
|
||||||
arg_spec: Option<String>,
|
arg_spec: Option<String>,
|
||||||
}
|
}
|
||||||
@ -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) {
|
fn transfer(
|
||||||
for account in db_conn.list_accounts(master_key).into_iter() {
|
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 {
|
let new_note = db::Note {
|
||||||
id: 0,
|
id: 0,
|
||||||
namespace: namespace.to_string(),
|
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
|
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<dyn Error>> {
|
|||||||
} else if args.cmd_list {
|
} else if args.cmd_list {
|
||||||
list(db_conn, master_key, &args.flag_namespace);
|
list(db_conn, master_key, &args.flag_namespace);
|
||||||
} else if args.cmd_transfer {
|
} 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 {
|
} else if args.cmd_dump {
|
||||||
dump(db_conn, master_key);
|
dump(db_conn, master_key);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user