operations/upgrade: use brand new upgrade builder

i18n
Fries 2 years ago committed by fries1234
parent a08173f460
commit 34e50db84b

@ -253,6 +253,30 @@ impl PacmanSearchBuilder {
} }
} }
#[derive(Default, Debug, Clone)]
pub struct PacmanUpgradeBuilder {
no_confirm: bool,
}
impl PacmanUpgradeBuilder {
pub fn no_confirm(mut self, no_confirm: bool) -> Self {
self.no_confirm = no_confirm;
self
}
#[tracing::instrument(level = "trace")]
pub async fn upgrade(self) -> AppResult<()> {
let mut command = ShellCommand::pacman().elevated().arg("-Syu");
if self.no_confirm {
command = command.arg("--noconfirm")
}
command.wait_success().await
}
}
#[derive(Default, Debug, Clone)] #[derive(Default, Debug, Clone)]
pub struct PacmanUninstallBuilder { pub struct PacmanUninstallBuilder {
packages: Vec<String>, packages: Vec<String>,

@ -1,6 +1,5 @@
use crate::args::UpgradeArgs; use crate::args::UpgradeArgs;
use crate::builder::pacman::{PacmanColor, PacmanQueryBuilder}; use crate::builder::pacman::{PacmanColor, PacmanQueryBuilder, PacmanUpgradeBuilder};
use crate::internal::commands::ShellCommand;
use crate::internal::detect; use crate::internal::detect;
use crate::internal::error::SilentUnwrap; use crate::internal::error::SilentUnwrap;
use crate::internal::exit_code::AppExitCode; use crate::internal::exit_code::AppExitCode;
@ -27,31 +26,22 @@ pub async fn upgrade(args: UpgradeArgs, options: Options) {
async fn upgrade_repo(options: Options) { async fn upgrade_repo(options: Options) {
let noconfirm = options.noconfirm; let noconfirm = options.noconfirm;
let mut pacman_args = vec!["-Syu"];
if noconfirm {
pacman_args.push("--noconfirm");
}
tracing::debug!("Upgrading repo packages"); tracing::debug!("Upgrading repo packages");
let pacman_result = ShellCommand::pacman() PacmanUpgradeBuilder::default()
.elevated() .no_confirm(noconfirm)
.args(pacman_args) .upgrade()
.wait()
.await .await
.silent_unwrap(AppExitCode::PacmanError); .unwrap_or_else(|_| {
let continue_upgrading = prompt!(default no,
if pacman_result.success() { "Failed to upgrade repo packages, continue to upgrading AUR packages?",
tracing::info!("Successfully upgraded repo packages"); );
} else { if !continue_upgrading {
let continue_upgrading = prompt!(default no, tracing::info!("Exiting");
"Failed to upgrade repo packages, continue to upgrading AUR packages?", std::process::exit(AppExitCode::PacmanError as i32);
); }
if !continue_upgrading { });
tracing::info!("Exiting"); tracing::info!("Successfully upgraded repo packages");
std::process::exit(AppExitCode::PacmanError as i32);
}
}
} }
#[tracing::instrument(level = "trace")] #[tracing::instrument(level = "trace")]

Loading…
Cancel
Save