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