From bdbb06d6cf24f49983d1e204cea3eb3f9f98a772 Mon Sep 17 00:00:00 2001 From: axtlos <3alouchi2006@gmail.com> Date: Fri, 8 Oct 2021 23:31:19 +0200 Subject: [PATCH] added first part of database --- Cargo.toml | 2 ++ main.rs | 80 ++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 3 ++ src/mods.rs | 1 + src/mods/database.rs | 20 +++++++++++ 5 files changed, 106 insertions(+) create mode 100644 main.rs create mode 100644 src/mods/database.rs diff --git a/Cargo.toml b/Cargo.toml index 9f98560..a07e371 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,5 @@ ansi_term = "*" uwuizer = "*" moins = "*" regex = "*" +toml_edit = "*" +toml = "*" diff --git a/main.rs b/main.rs new file mode 100644 index 0000000..84b65d3 --- /dev/null +++ b/main.rs @@ -0,0 +1,80 @@ + +mod mods; +use mods::{clearcache::clearcache, clone::clone, help::help, install::install, inssort::inssort, search::{a_search, r_search}, uninstall::uninstall, upgrade::upgrade, update::update, ver::ver, strs::inf, strs::err_unrec, strs::err_rec, xargs::*, database::addPkg}; +use std::{env, process::exit, process::Command}; + +fn main() { + // let statements + let args: Vec = env::args().collect(); + let mut pkgs: Vec = env::args().skip(2).collect(); + + // args catch + if args.len() <= 1 { + help(); + exit(1); + } + + let oper = &args[1]; + let noconfirm: bool = noconf(&args); + + argssort(&mut pkgs); + + // install + if oper == "-S" || oper == "-Sn" || oper == "ins" { + inssort(noconfirm, pkgs); + + // remove + } else if oper == "-R" || oper == "-Rn " || oper == "-Rsn" || oper == "-Rs" || oper == "rm" { + uninstall(noconfirm, pkgs); + + // upgrade + } else if oper == "-Syu" || oper == "-Syun" || oper == "upg" { + upgrade(noconfirm); + + // update + } else if oper == "-Sy" || oper == "upd" { + update(); + } else if oper == "-db" { + addPkg(pkgs); + // general search + } else if oper == "-Ss" || oper == "sea" { + r_search(&args[2]); + a_search(&args[2]); + + // aur search + } else if oper == "-Sa" || oper == "aursea" { + a_search(&args[2]); + + // repo search + } else if oper == "-Sr" || oper == "repsea" { + r_search(&args[2]); + + // clear cache !! DEBUG ONLY !! DO NOT DO THIS IF YOU DONT KNOW WHAT YOURE DOING !! + } else if oper == "-Cc" || oper == "clr" { + clearcache(); + + // version / contrib + } else if oper == "-v" || oper == "-V" || oper == "ver" { + ver(); + + // help + } else if oper == "-h" || oper == "help" { + help(); + // pacman passthrough + } else { + let pass = Command::new("pacman") + .args(env::args().skip(1)) + .status() + .expect("Something has gone wrong."); + + match pass.code() { + Some(1) => { + err_rec(format!("No such operation \"{}\"", args.join(" "))); + inf(format!("Try running \"ame help\" for an overview of how to use ame")) + } + Some(_) => {} + None => { + err_unrec(format!("Something has gone terribly wrong.")) + }} + } +} diff --git a/src/main.rs b/src/main.rs index fdcf379..825a15c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@ use mods::{ upgrade::upgrade, ver::ver, xargs::*, + database::addPkg }; use std::{env, process::exit, process::Command}; @@ -41,6 +42,8 @@ fn main() { upgrade(noconfirm); } else if oper == "-Sy" || oper == "upd" { update(); + } else if oper == "-db" { + addPkg(pkgs); } else if oper == "-Ss" || oper == "sea" { r_search(&args[2]); a_search(&args[2]); diff --git a/src/mods.rs b/src/mods.rs index 9581b1f..adff73a 100644 --- a/src/mods.rs +++ b/src/mods.rs @@ -10,3 +10,4 @@ pub mod update; pub mod upgrade; pub mod ver; pub mod xargs; +pub mod database; \ No newline at end of file diff --git a/src/mods/database.rs b/src/mods/database.rs new file mode 100644 index 0000000..6d421c2 --- /dev/null +++ b/src/mods/database.rs @@ -0,0 +1,20 @@ +use toml_edit::{Document, value}; +use std::io::{Read, Write}; + + +pub fn addPkg(pkgs: Vec) { + 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 mut dbParsed = database.parse::().expect("invalid Database"); + for i in pkgs { + let results = raur::search(&i); + for res in &results { + for r in res { + dbParsed[&i]["name"] = value(&r.name); + dbParsed[&i]["version"] = value(&r.version); + } + } + } + print!("{}",dbParsed); +} \ No newline at end of file