From 9e565eaffd68fd868360de96f26c5f96beb939c7 Mon Sep 17 00:00:00 2001 From: axtlos <3alouchi2006@gmail.com> Date: Fri, 27 Aug 2021 19:42:09 +0200 Subject: [PATCH] added config changes, view comments for details --- config.toml | 13 +++++++++++++ src/main.rs | 32 +++++++++++++------------------- src/mods/install.rs | 9 +++++++-- src/mods/uninstall.rs | 17 ++++++++--------- src/mods/upgrade.rs | 20 ++++++++++++++------ 5 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 config.toml diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..eb302d4 --- /dev/null +++ b/config.toml @@ -0,0 +1,13 @@ +cache = "/home/user/.cache/ame" + +[backends] +pacman = true +flatpak = false +snap = false +aur = true + +[pacman] +noconfirm = true + +[aur] +clone_path = "/home/user/.cache/ame" diff --git a/src/main.rs b/src/main.rs index 0e535ea..3276165 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ mod mods; use toml; use serde; +use std::fs::File; +use std::io::prelude::*; use mods::{clearcache::clearcache, clone::clone, help::help, install::install, search::{a_search, r_search}, uninstall::uninstall, upgrade::upgrade, flatpak::flatpak, snap::snap}; use std::{env, process::exit, process::Command}; @@ -32,22 +34,11 @@ struct AUR { fn main() { let args: Vec = env::args().collect(); - - let configfile: General = toml::from_str(r#" - cache = "/home/user/.cache/ame" - - [backends] - pacman = true - flatpak = true - snap = false - aur = true - - [pacman] - noconfirm = false - - [aur] - clone_path = "/home/user/.cache/ame" - "#).unwrap(); + let mut file = File::open("config.toml").expect("Unable to open the Config file"); + let mut config = String::new(); + file.read_to_string(&mut config).expect("Unable to read the Config file"); + println!("{}", config); + let configfile: General = toml::from_str(&config).unwrap(); if args.len() <= 1 { help(); @@ -59,7 +50,8 @@ fn main() { if configfile.backends.pacman.unwrap() == true { let out = Command::new("pacman").arg("-Ss").arg(&arg).status().unwrap(); if out.success() { - install(&arg); + let configoption_noconfirm = configfile.pacman.noconfirm.unwrap(); + install(configoption_noconfirm, &arg); } else { if configfile.backends.aur.unwrap() == true { clone(&arg); @@ -79,10 +71,12 @@ fn main() { } } else if oper == "-R" { for arg in env::args().skip(2) { - uninstall(&arg); + let configoption_noconfirm = configfile.pacman.noconfirm.unwrap(); + uninstall(configoption_noconfirm, &arg); } } else if oper == "-Syu" { - upgrade(); + let configoption_noconfirm = configfile.pacman.noconfirm.unwrap(); + upgrade(configoption_noconfirm); } else if oper == "-Ss" { for arg in env::args().skip(2) { r_search(&arg); diff --git a/src/mods/install.rs b/src/mods/install.rs index 8e2358f..0979de5 100644 --- a/src/mods/install.rs +++ b/src/mods/install.rs @@ -1,6 +1,11 @@ use runas::Command; -pub fn install(pkg: &str) { +pub fn install(noconfirm: bool, pkg: &str) { + println!("{}",noconfirm); let errstr = format!("Oops.. Something went wrong!"); - Command::new("pacman").arg("-S").arg(&pkg).status().expect(&errstr); + if (noconfirm == false) { + Command::new("pacman").arg("-S").arg(&pkg).status().expect(&errstr); + } else { + Command::new("pacman").arg("-S").arg("--noconfirm").arg(&pkg).status().expect(&errstr); + } } diff --git a/src/mods/uninstall.rs b/src/mods/uninstall.rs index b7dceac..0a61e33 100644 --- a/src/mods/uninstall.rs +++ b/src/mods/uninstall.rs @@ -1,12 +1,11 @@ -use std::process::Command; +use runas::Command; -pub fn uninstall(pkg: &str) { +pub fn uninstall(noconfirm: bool, pkg: &str) { let errstr = format!("Could not remove package {}", pkg); - Command::new("sudo") - .arg("pacman") - .arg("-R") - .arg("--noconfirm") - .arg(&pkg) - .status() - .expect(&errstr); + + if (noconfirm == false) { + Command::new("pacman").arg("-R").arg(&pkg).status().expect(&errstr); + } else { + Command::new("pacman").arg("-R").arg("--noconfirm").arg(&pkg).status().expect(&errstr); + } } diff --git a/src/mods/upgrade.rs b/src/mods/upgrade.rs index 4764ead..91a6abc 100644 --- a/src/mods/upgrade.rs +++ b/src/mods/upgrade.rs @@ -1,9 +1,17 @@ -use std::process::Command; +use runas::Command; -pub fn upgrade() { +pub fn upgrade(noconfirm: bool) { let errstr = format!("Something happened"); - Command::new("pacman") - .arg("-Syu") - .status() - .expect(&errstr); + if (noconfirm == true) { + Command::new("pacman") + .arg("-Syu") + .arg("--noconfirm") + .status() + .expect(&errstr); + } else { + Command::new("pacman") + .arg("-Syu") + .status() + .expect(&errstr); + } }