From b362561466e00109cb43c5c304439edb41122417 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 2 Jun 2019 23:42:35 -0400 Subject: [PATCH] updated get to operate against the new schema --- src/main.rs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index ad54123..51f7bd0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,7 @@ foil Usage: foil set [--db=] - foil get [--db=] + foil get [--namespace=] [--db=] foil list [--db=] foil transfer [--db=] foil dump [--db=] @@ -27,9 +27,10 @@ Usage: foil (-h | --help) Options: - --db= The path to the sqlite database [default: db.sqlite3]. - -h --help Show this screen. - --version Show version. + --db= The path to the 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. "; #[derive(Debug, Deserialize)] @@ -41,6 +42,7 @@ struct Args { cmd_transfer: bool, cmd_dump: bool, flag_db: Option, + flag_namespace: String, arg_spec: Option, } @@ -65,10 +67,6 @@ fn get_master_key(db_conn: &mut db::DbHandle) -> [u8; 32] { let master_key: [u8; 32] = { let master_password = PasswordInput::with_theme(&ColorfulTheme::default()) .with_prompt("Master password") - .with_confirmation( - "Repeat master password", - "Error: the passwords don't match.", - ) .interact() .unwrap(); crypt::get_master_key(&db_conn, &master_password).unwrap() @@ -104,17 +102,20 @@ fn list(mut db_conn: db::DbHandle, master_key: [u8; 32]) { } } -fn get(mut db_conn: db::DbHandle, master_key: [u8; 32]) { +fn get(mut db_conn: db::DbHandle, master_key: [u8; 32], namespace: &str) { println!("Reading a site from the database"); let host: String = Input::with_theme(&ColorfulTheme::default()) .with_prompt("hostname") .interact() .unwrap(); - for account in db_conn.list_accounts(master_key) { - if account.host == host { - println!("username: {}", account.user); - println!("password: {}", account.password); + for note in db_conn.read_notes(master_key).unwrap() { + if note.namespace == namespace && note.title == host && note.category == "account" { + println!("===== note ====="); + println!("namespace: {}", note.namespace); + println!("category: {}", note.category); + println!("title: {}", note.title); + println!("{}", note.value); } } } @@ -189,7 +190,7 @@ fn main() -> Result<(), Box> { if args.cmd_set { set(db_conn, master_key); } else if args.cmd_get { - get(db_conn, master_key); + get(db_conn, master_key, &args.flag_namespace); } else if args.cmd_list { list(db_conn, master_key); } else if args.cmd_transfer {