diff --git a/Cargo.toml b/Cargo.toml index a07e371..33f6122 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,3 +17,4 @@ moins = "*" regex = "*" toml_edit = "*" toml = "*" +bytes = "*" diff --git a/src/main.rs b/src/main.rs index 825a15c..f39da20 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ use mods::{ upgrade::upgrade, ver::ver, xargs::*, - database::addPkg + database::{addPkg, remPkg} }; use std::{env, process::exit, process::Command}; @@ -44,6 +44,8 @@ fn main() { update(); } else if oper == "-db" { addPkg(pkgs); + } else if oper == "-remdb" { + remPkg(pkgs); } else if oper == "-Ss" || oper == "sea" { r_search(&args[2]); a_search(&args[2]); diff --git a/src/mods/database.rs b/src/mods/database.rs index 6d421c2..db84b6f 100644 --- a/src/mods/database.rs +++ b/src/mods/database.rs @@ -1,13 +1,32 @@ +use regex::bytes; 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) { + 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) { + 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) -> Result<(), Error> { 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::().expect("invalid Database"); - for i in pkgs { + for i in pkgs { let results = raur::search(&i); for res in &results { for r in res { @@ -17,4 +36,6 @@ pub fn addPkg(pkgs: Vec) { } } print!("{}",dbParsed); + fileAsPath.write_all(format!("{}",dbParsed).as_bytes()).unwrap(); + Ok(()) } \ No newline at end of file