From 5d7c03ef3bcef337f6af85446fa724c67c612cf8 Mon Sep 17 00:00:00 2001 From: jnats Date: Sat, 2 Oct 2021 13:06:50 +0100 Subject: [PATCH] added pkgbuild prompt and fixed noconfirm --- Cargo.toml | 4 +++- src/main.rs | 41 ++++++++++++----------------------------- src/mods.rs | 1 + src/mods/clearcache.rs | 4 ++-- src/mods/clone.rs | 18 ++++++++++++------ src/mods/inssort.rs | 14 +++----------- src/mods/strs.rs | 27 +++++++++++++++++++++++++++ src/mods/upgrade.rs | 4 +++- src/mods/ver.rs | 2 +- src/mods/xargs.rs | 26 ++++++++++++++++++++++++++ 10 files changed, 90 insertions(+), 51 deletions(-) create mode 100644 src/mods/xargs.rs diff --git a/Cargo.toml b/Cargo.toml index c00273e..2030dab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ame" -version = "2.2.4" +version = "2.3.0" authors = [ "jnats ", "axtlos " ] edition = "2018" description = "a fast and efficient aur helper." @@ -13,3 +13,5 @@ raur = "2.0.2" runas = "*" ansi_term = "*" uwuizer = "*" +text_io = "*" +moins = "*" diff --git a/src/main.rs b/src/main.rs index dd1cc7a..7f090ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,12 @@ 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}; +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::*}; use std::{env, process::exit, process::Command}; fn main() { // let statements let args: Vec = env::args().collect(); - let homepath = std::env::var("HOME").unwrap(); - let cache_path = format!("/{}/.cache/ame/", homepath); - let pkgs = env::args().skip(2).collect(); + let mut pkgs: Vec = env::args().skip(2).collect(); // args catch if args.len() <= 1 { @@ -17,30 +15,21 @@ fn main() { } let oper = &args[1]; + let noconfirm: bool = noconf(&args); + + argssort(&mut pkgs); // install if oper == "-S" || oper == "-Sn" || oper == "ins" { - if oper == "-Sn" { - inssort(true, pkgs); - } else { - inssort(false, pkgs); - } + inssort(noconfirm, pkgs); // remove } else if oper == "-R" || oper == "-Rn " || oper == "-Rsn" || oper == "-Rs" || oper == "rm" { - if oper == "-Rn" || oper == "-Rsn" { - uninstall(true, pkgs); - } else { - uninstall(false, pkgs); - } + uninstall(noconfirm, pkgs); // upgrade } else if oper == "-Syu" || oper == "-Syun" || oper == "upg" { - if oper == ("-Syun") { - upgrade(true, &cache_path); - } else { - upgrade(false, &cache_path); - } + upgrade(noconfirm); // update } else if oper == "-Sy" || oper == "upd" { @@ -48,22 +37,16 @@ fn main() { // general search } else if oper == "-Ss" || oper == "sea" { - for arg in env::args().skip(2) { - r_search(&arg); - a_search(&arg); - } + r_search(&args[2]); + a_search(&args[2]); // aur search } else if oper == "-Sa" || oper == "aursea" { - for arg in env::args().skip(2) { - a_search(&arg); - } + a_search(&args[2]); // repo search } else if oper == "-Sr" || oper == "repsea" { - for arg in env::args().skip(2) { - r_search(&arg); - } + 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" { diff --git a/src/mods.rs b/src/mods.rs index 432a22d..e97bc4c 100644 --- a/src/mods.rs +++ b/src/mods.rs @@ -9,3 +9,4 @@ pub mod update; pub mod strs; pub mod ver; pub mod inssort; +pub mod xargs; diff --git a/src/mods/clearcache.rs b/src/mods/clearcache.rs index 43f4b5e..add2a66 100644 --- a/src/mods/clearcache.rs +++ b/src/mods/clearcache.rs @@ -1,10 +1,10 @@ use std::fs; -use crate::mods::strs::inf; +use crate::mods::strs::err_rec; pub fn clearcache() { let path = format!("{}/.cache/ame/", std::env::var("HOME").unwrap()); - inf(format!("Clearing cache")); + err_rec(format!("Clearing cache")); fs::remove_dir_all(&path).unwrap(); fs::create_dir(&path).unwrap(); diff --git a/src/mods/clone.rs b/src/mods/clone.rs index b22e08b..1c3878e 100644 --- a/src/mods/clone.rs +++ b/src/mods/clone.rs @@ -1,6 +1,7 @@ use git2::Repository; +use moins::Moins; use std::{env, fs, path::Path, process::Command}; -use crate::{err_unrec, inf, inssort, mods::strs::succ, mods::strs::sec}; +use crate::{err_unrec, inf, inssort, mods::strs::succ, mods::strs::sec, mods::strs::prompt}; pub fn clone(noconfirm: bool, pkg: &str) { let cachedir = format!("{}/.cache/ame", std::env::var("HOME").unwrap()); @@ -62,14 +63,19 @@ pub fn clone(noconfirm: bool, pkg: &str) { // | riiiiight let aurpkgname = results[0].name.to_string(); // v here let depends = raur::info(&[&aurpkgname]).unwrap()[0].depends.clone(); - if noconfirm == true { - inssort(true, depends); - } else { - inssort(false, depends); - } + inssort(noconfirm, depends); Repository::clone(&url, Path::new(&pkgdir)).unwrap(); + if noconfirm == false { + let pkgbuild = prompt(format!("View PKGBUILD?")); + + if pkgbuild == true { + let mut pkgbld = fs::read_to_string(format!("{}/PKGBUILD", &pkgdir)).unwrap(); + Moins::run(&mut pkgbld, None); + } + } + if noconfirm == true { sec(format!("Installing {} ...", pkg)); let install_result = Command::new("makepkg") diff --git a/src/mods/inssort.rs b/src/mods/inssort.rs index 57ec6c8..197b600 100644 --- a/src/mods/inssort.rs +++ b/src/mods/inssort.rs @@ -27,19 +27,11 @@ pub fn inssort(noconfirm: bool, pkgs: Vec) { if repo.len() != 0 { sec(format!("Installing repo packages: {}", &repo.join(", "))); - if noconfirm == true { - install(true, &repo.join(" ")); - } else { - install(false, &repo.join(" ")); - } + install(noconfirm, &repo.join(" ")); } for a in aur { - sec(format!("Installing AUR package: {}", a)); - if noconfirm == true { - clone(true, &a); - } else { - clone(false, &a); - } + sec(format!("Installing AUR package: {}", a)); + clone(noconfirm, &a); } } diff --git a/src/mods/strs.rs b/src/mods/strs.rs index fa21bb1..036efde 100644 --- a/src/mods/strs.rs +++ b/src/mods/strs.rs @@ -1,6 +1,7 @@ use ansi_term::Colour; use std::{process, env}; use uwuizer::*; +use text_io::read; pub fn inf(a: std::string::String){ if env::var("AME_UWU").unwrap_or("n/a".to_string()) == "YES" { @@ -38,6 +39,32 @@ pub fn succ(a: std::string::String) { } } +pub fn prompt(a: std::string::String) -> bool { + if env::var("AME_UWU").unwrap_or("n/a".to_string()) == "YES" { + println!("{} {} {}", + Colour::Purple.bold().paint("❖"), + Colour::White.bold().paint(uwuize!(&a)), + Colour::White.bold().paint("(Y/n): ")); + let yn: String = read!(); + if yn == "n" || yn == "N" || yn == "no" || yn == "No" { + false + } else { + true + } + } else { + println!("{} {} {}", + Colour::Purple.bold().paint("❖"), + Colour::White.bold().paint(&a), + Colour::White.bold().paint("(Y/n): ")); + let yn: String = read!(); + if yn == "n" || yn == "N" || yn == "no" || yn == "No" { + false + } else { + true + } + } +} + pub fn err_unrec(a: std::string::String) { if env::var("AME_UWU").unwrap_or("n/a".to_string()) == "YES" { diff --git a/src/mods/upgrade.rs b/src/mods/upgrade.rs index 86c5f65..7e6daac 100644 --- a/src/mods/upgrade.rs +++ b/src/mods/upgrade.rs @@ -2,7 +2,9 @@ use runas::Command; use std::env; use crate::mods::strs::{err_unrec, inf, sec, succ}; -pub fn upgrade(noconfirm: bool, cachedir: &str){ +pub fn upgrade(noconfirm: bool){ + let homepath = std::env::var("HOME").unwrap(); + let cachedir = format!("/{}/.cache/ame/", homepath); sec(format!("Performing system upgrade")); if noconfirm == true { let result = Command::new("pacman") diff --git a/src/mods/ver.rs b/src/mods/ver.rs index 71b4259..bcd73be 100644 --- a/src/mods/ver.rs +++ b/src/mods/ver.rs @@ -3,7 +3,7 @@ use ansi_term::Colour; pub fn ver() { println!(""); - inf(format!("ame - v2.2.4")); + inf(format!("ame - v2.3.0")); println!(""); inf(format!("Contributors:")); println!("- axtlos "); diff --git a/src/mods/xargs.rs b/src/mods/xargs.rs new file mode 100644 index 0000000..0d087d0 --- /dev/null +++ b/src/mods/xargs.rs @@ -0,0 +1,26 @@ +pub fn noconf(args: &Vec) -> bool { + if args.contains(&"--noconfirm".to_string()) || args[1].ends_with(&"n".to_string()) { + true + } else { + false + } + } + +pub fn argssort(args: &mut Vec) -> &Vec { + if args.contains(&"--noconfirm".to_string()) { + args.retain(|x| x != &"--noconfirm".to_string()); + println!("{:?}", args); + args + } else if args.contains(&"--pkgbuild".to_string()) { + args.retain(|x| x != &"--pkgbuild".to_string()); + println!("{:?}", args); + args + } else if args.contains(&"--pkgbuild".to_string()) && args.contains(&"--noconfirm".to_string()) { + args.retain(|x| x != &"--noconfirm".to_string()); + args.retain(|x| x != &"--pkgbuild".to_string()); + println!("{:?}", args); + args + } else { + args + } + }