🐛 Fixes updating items
This commit is contained in:
@@ -97,8 +97,12 @@ pub fn check_bw() -> Result<(), Error> {
|
||||
|
||||
pub fn get_items() -> Result<Vec<Item>, Error> {
|
||||
let items_raw = sh::sh(format!("{} list items --raw", EXECUTABLE));
|
||||
match serde_json::from_str(items_raw.as_str()) {
|
||||
Ok(val) => Ok(val),
|
||||
match serde_json::from_str::<Vec<Item>>(items_raw.as_str()) {
|
||||
Ok(val) => Ok(val
|
||||
.iter()
|
||||
.filter(|x| x.type_ == 1)
|
||||
.cloned()
|
||||
.collect::<Vec<Item>>()),
|
||||
Err(e) => Err(Error::new(
|
||||
ErrorKind::Other,
|
||||
format!("Couldn't get items: {e}"),
|
||||
|
||||
+15
-25
@@ -59,11 +59,9 @@ fn sync() -> Result<(), Error> {
|
||||
}
|
||||
};
|
||||
|
||||
println!("getting pass logins");
|
||||
let pass_items = pass::get_items(&vault)?;
|
||||
let mut pass_logins = pass::get_logins(pass_items);
|
||||
|
||||
println!("getting bw logins");
|
||||
let mut bw_items = bw::get_items()?;
|
||||
|
||||
println!();
|
||||
@@ -93,28 +91,25 @@ fn sync() -> Result<(), Error> {
|
||||
}
|
||||
let pass_login = pass_login.unwrap();
|
||||
|
||||
let bw_password = bw_login.password.clone();
|
||||
// TODO: fix this
|
||||
if let None = bw_password {
|
||||
continue;
|
||||
}
|
||||
let bw_password = bw_password.unwrap();
|
||||
|
||||
let bw_password = bw_login.password.clone().unwrap_or("".to_string());
|
||||
let pass_password = pass_login.password.clone();
|
||||
|
||||
let bw_user = bw_login.username.clone();
|
||||
if let None = bw_user {
|
||||
continue;
|
||||
}
|
||||
let bw_user = bw_user.unwrap();
|
||||
|
||||
let bw_user = bw_login.username.clone().unwrap_or("".to_string());
|
||||
let pass_user = match pass_login.username.is_empty() {
|
||||
true => pass_login.email.clone(),
|
||||
false => pass_login.username.clone(),
|
||||
};
|
||||
let pass_user_is_actually_email = pass_user == pass_login.email;
|
||||
|
||||
if bw_user != pass_user || bw_password != pass_password {
|
||||
println!(
|
||||
"{}: {} -> {} and {} -> {}",
|
||||
bw_item.name,
|
||||
pass_user,
|
||||
bw_user,
|
||||
bw_password.clone(),
|
||||
pass_password
|
||||
);
|
||||
if bw_user != pass_user || (bw_password != pass_password && bw_password != "".to_string()) {
|
||||
let consent = ask_consent(
|
||||
format!("Attempting to update {}:", bw_item.name),
|
||||
format!("{} -> {}", pass_user, bw_user.clone()),
|
||||
@@ -136,12 +131,14 @@ fn sync() -> Result<(), Error> {
|
||||
}
|
||||
|
||||
let bw_index = bw_items.iter().position(|x| x.id == bw_item.id).unwrap();
|
||||
println!("found bw index {}", bw_index);
|
||||
bw_items.remove(bw_index);
|
||||
|
||||
let pass_index = pass_logins
|
||||
.iter()
|
||||
.position(|x| x.id == pass_login.id)
|
||||
.unwrap();
|
||||
println!("found pass index {}", pass_index);
|
||||
pass_logins.remove(pass_index);
|
||||
}
|
||||
|
||||
@@ -153,19 +150,12 @@ fn sync() -> Result<(), Error> {
|
||||
);
|
||||
|
||||
for bw_item in bw_items {
|
||||
if let None = bw_item.login {
|
||||
continue;
|
||||
}
|
||||
|
||||
let login = bw_item.login.unwrap();
|
||||
if let None = login.username {
|
||||
continue;
|
||||
}
|
||||
|
||||
let consent = ask_consent(
|
||||
format!("Attempting to create {}:", bw_item.name),
|
||||
format!("{}", login.username.clone().unwrap()),
|
||||
format!("{:?}", login.password),
|
||||
format!("{}", login.username.clone().unwrap_or("".to_string())),
|
||||
format!("{}", login.password.clone().unwrap_or("".to_string())),
|
||||
)?;
|
||||
if consent {
|
||||
pass::create(
|
||||
|
||||
Reference in New Issue
Block a user