From 2bc764e4c50af840cee39c2c7a15112babd628ca Mon Sep 17 00:00:00 2001 From: Fries Date: Sat, 17 Sep 2022 21:06:20 -0700 Subject: [PATCH] amethyst: warn if installing aur packages --- src/internal/config.rs | 2 ++ src/main.rs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/internal/config.rs b/src/internal/config.rs index e0d599e..dcdcd47 100644 --- a/src/internal/config.rs +++ b/src/internal/config.rs @@ -19,6 +19,7 @@ pub struct ConfigBase { pub pacdiff_warn: bool, pub paccache_keep: i32, pub paccache_keep_ins_pkgs: bool, + pub aur_verification_prompt: bool, } #[derive(Debug, Deserialize, Serialize, Default)] @@ -38,6 +39,7 @@ impl Default for ConfigBase { pacdiff_warn: true, paccache_keep: 0, paccache_keep_ins_pkgs: true, + aur_verification_prompt: true, } } } diff --git a/src/main.rs b/src/main.rs index bba8ebf..dfc1381 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ use internal::error::SilentUnwrap; use crate::args::{InstallArgs, Operation, QueryArgs, RemoveArgs}; use crate::interact::page_string; +use crate::internal::config::Config; use crate::internal::exit_code::AppExitCode; use crate::internal::{sort, start_sudoloop, structs::Options}; use crate::logging::get_logger; @@ -79,6 +80,7 @@ async fn main() { async fn cmd_install(args: InstallArgs, options: Options) { let packages = &args.packages; let both = !args.aur && !args.repo; + let noconfirm = options.noconfirm; match args.search { true => { @@ -108,6 +110,22 @@ async fn cmd_install(args: InstallArgs, options: Options) { operations::install(sorted.repo, options).await; } if !sorted.aur.is_empty() { + if Config::read().base.aur_verification_prompt { + tracing::info!( + "{}", + format!( + "These packages:\n{}\nwere found in the AUR.", + sorted.aur.join(", ") + ) + ); + tracing::info!("The AUR is a source of user-submitted scripts and isn't always safe to use.\nPlease make sure to read the PKGBUILDs of any packages you download from the AUR before installing them, to ensure the PKGBUILDs only do what they need to do."); + let cont = noconfirm + || prompt!(default no, "Are you sure that you want to continue?"); + if !cont { + tracing::info!("Exiting"); + std::process::exit(AppExitCode::PacmanError as i32); + } + } operations::aur_install(sorted.aur, options).await; } }