is now able to remove packages from the database

i18n
axtlos 3 years ago
parent bdbb06d6cf
commit 6fd0a468fa

@ -17,3 +17,4 @@ moins = "*"
regex = "*" regex = "*"
toml_edit = "*" toml_edit = "*"
toml = "*" toml = "*"
bytes = "*"

@ -14,7 +14,7 @@ use mods::{
upgrade::upgrade, upgrade::upgrade,
ver::ver, ver::ver,
xargs::*, xargs::*,
database::addPkg database::{addPkg, remPkg}
}; };
use std::{env, process::exit, process::Command}; use std::{env, process::exit, process::Command};
@ -44,6 +44,8 @@ fn main() {
update(); update();
} else if oper == "-db" { } else if oper == "-db" {
addPkg(pkgs); addPkg(pkgs);
} else if oper == "-remdb" {
remPkg(pkgs);
} else if oper == "-Ss" || oper == "sea" { } else if oper == "-Ss" || oper == "sea" {
r_search(&args[2]); r_search(&args[2]);
a_search(&args[2]); a_search(&args[2]);

@ -1,13 +1,32 @@
use regex::bytes;
use toml_edit::{Document, value}; use toml_edit::{Document, value};
use std::io::{Read, Write}; use std::io::{Read, Write, Error};
use std::fs::File;
pub fn remPkg(pkgs: Vec<String>) {
let file = format!("{}/.local/ame/aurPkgs.db", std::env::var("HOME").unwrap());
let mut database = std::fs::read_to_string(&file).expect("cant open database");
pub fn addPkg(pkgs: Vec<String>) { let mut updateDatabase = database;
for i in pkgs {
let results = raur::search(&i);
for res in &results {
let databaseEntry = format!("{} = {{ name = \"{}\", version = \"{}\"}}\n",&i, &res[0].name, &res[0].version);
updateDatabase = format!("{}",updateDatabase.replace(&databaseEntry, ""));
}
}
let fileAsPath = File::create(std::path::Path::new(&file)).unwrap();
write!(&fileAsPath, "{}", updateDatabase);
}
pub fn addPkg(pkgs: Vec<String>) -> Result<(), Error> {
let file = format!("{}/.local/ame/aurPkgs.db", std::env::var("HOME").unwrap()); let file = format!("{}/.local/ame/aurPkgs.db", std::env::var("HOME").unwrap());
let database = std::fs::read_to_string(&file).expect("cant open new configuration"); let database = std::fs::read_to_string(&file).expect("cant open database");
let mut fileAsPath = File::create(std::path::Path::new(&file))?;
let mut dbParsed = database.parse::<Document>().expect("invalid Database"); let mut dbParsed = database.parse::<Document>().expect("invalid Database");
for i in pkgs { for i in pkgs {
let results = raur::search(&i); let results = raur::search(&i);
for res in &results { for res in &results {
for r in res { for r in res {
@ -17,4 +36,6 @@ pub fn addPkg(pkgs: Vec<String>) {
} }
} }
print!("{}",dbParsed); print!("{}",dbParsed);
fileAsPath.write_all(format!("{}",dbParsed).as_bytes()).unwrap();
Ok(())
} }
Loading…
Cancel
Save