Don't panic when cannot detect the arch package manager (fix #818)
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
use std::process::ExitStatus;
|
use std::process::ExitStatus;
|
||||||
|
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
#[derive(Error, Debug, PartialEq)]
|
#[derive(Error, Debug, PartialEq)]
|
||||||
@@ -16,6 +17,10 @@ pub enum TopgradeError {
|
|||||||
#[error("Unknown Linux Distribution")]
|
#[error("Unknown Linux Distribution")]
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
UnknownLinuxDistribution,
|
UnknownLinuxDistribution,
|
||||||
|
|
||||||
|
#[error("Failed getting the system package manager")]
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
FailedGettingPackageManager,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
use crate::execution_context::ExecutionContext;
|
|
||||||
use crate::utils::which;
|
|
||||||
use crate::{config, Step};
|
|
||||||
use anyhow::Result;
|
|
||||||
use std::env::var_os;
|
use std::env::var_os;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
use walkdir::WalkDir;
|
use walkdir::WalkDir;
|
||||||
|
|
||||||
|
use crate::error::TopgradeError;
|
||||||
|
use crate::execution_context::ExecutionContext;
|
||||||
|
use crate::utils::which;
|
||||||
|
use crate::{config, Step};
|
||||||
|
|
||||||
fn get_execution_path() -> OsString {
|
fn get_execution_path() -> OsString {
|
||||||
let mut path = OsString::from("/usr/bin:");
|
let mut path = OsString::from("/usr/bin:");
|
||||||
path.push(var_os("PATH").unwrap());
|
path.push(var_os("PATH").unwrap());
|
||||||
@@ -171,7 +174,8 @@ pub fn get_arch_package_manager(ctx: &ExecutionContext) -> Option<Box<dyn ArchPa
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn upgrade_arch_linux(ctx: &ExecutionContext) -> Result<()> {
|
pub fn upgrade_arch_linux(ctx: &ExecutionContext) -> Result<()> {
|
||||||
let package_manager = get_arch_package_manager(ctx).unwrap();
|
let package_manager =
|
||||||
|
get_arch_package_manager(ctx).ok_or_else(|| anyhow::Error::from(TopgradeError::FailedGettingPackageManager))?;
|
||||||
package_manager.upgrade(ctx)
|
package_manager.upgrade(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user