Implement cleanup for Debian based distros (#102)
This commit is contained in:
committed by
Roey Darwish Dror
parent
88ab17cfc3
commit
66c6338b42
20
src/linux.rs
20
src/linux.rs
@@ -59,14 +59,14 @@ impl Distribution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn upgrade(self, sudo: &Option<PathBuf>, dry_run: bool) -> Option<(&'static str, bool)> {
|
pub fn upgrade(self, sudo: &Option<PathBuf>, cleanup: bool, dry_run: bool) -> Option<(&'static str, bool)> {
|
||||||
print_separator("System update");
|
print_separator("System update");
|
||||||
|
|
||||||
let success = match self {
|
let success = match self {
|
||||||
Distribution::Arch => upgrade_arch_linux(&sudo, dry_run),
|
Distribution::Arch => upgrade_arch_linux(&sudo, dry_run),
|
||||||
Distribution::CentOS => upgrade_redhat(&sudo, dry_run),
|
Distribution::CentOS => upgrade_redhat(&sudo, dry_run),
|
||||||
Distribution::Fedora => upgrade_fedora(&sudo, dry_run),
|
Distribution::Fedora => upgrade_fedora(&sudo, dry_run),
|
||||||
Distribution::Ubuntu | Distribution::Debian => upgrade_debian(&sudo, dry_run),
|
Distribution::Ubuntu | Distribution::Debian => upgrade_debian(&sudo, cleanup, dry_run),
|
||||||
Distribution::Gentoo => upgrade_gentoo(&sudo, dry_run),
|
Distribution::Gentoo => upgrade_gentoo(&sudo, dry_run),
|
||||||
Distribution::OpenSuse => upgrade_opensuse(&sudo, dry_run),
|
Distribution::OpenSuse => upgrade_opensuse(&sudo, dry_run),
|
||||||
Distribution::Void => upgrade_void(&sudo, dry_run),
|
Distribution::Void => upgrade_void(&sudo, dry_run),
|
||||||
@@ -228,7 +228,7 @@ fn upgrade_gentoo(sudo: &Option<PathBuf>, dry_run: bool) -> Result<(), Error> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn upgrade_debian(sudo: &Option<PathBuf>, dry_run: bool) -> Result<(), Error> {
|
fn upgrade_debian(sudo: &Option<PathBuf>, cleanup: bool, dry_run: bool) -> Result<(), Error> {
|
||||||
if let Some(sudo) = &sudo {
|
if let Some(sudo) = &sudo {
|
||||||
Executor::new(&sudo, dry_run)
|
Executor::new(&sudo, dry_run)
|
||||||
.args(&["/usr/bin/apt", "update"])
|
.args(&["/usr/bin/apt", "update"])
|
||||||
@@ -241,6 +241,20 @@ fn upgrade_debian(sudo: &Option<PathBuf>, dry_run: bool) -> Result<(), Error> {
|
|||||||
.spawn()?
|
.spawn()?
|
||||||
.wait()?
|
.wait()?
|
||||||
.check()?;
|
.check()?;
|
||||||
|
|
||||||
|
if cleanup {
|
||||||
|
Executor::new(&sudo, dry_run)
|
||||||
|
.args(&["/usr/bin/apt", "clean"])
|
||||||
|
.spawn()?
|
||||||
|
.wait()?
|
||||||
|
.check()?;
|
||||||
|
|
||||||
|
Executor::new(&sudo, dry_run)
|
||||||
|
.args(&["/usr/bin/apt", "autoremove"])
|
||||||
|
.spawn()?
|
||||||
|
.wait()?
|
||||||
|
.check()?;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print_warning("No sudo detected. Skipping system upgrade");
|
print_warning("No sudo detected. Skipping system upgrade");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,10 @@ fn run() -> Result<(), Error> {
|
|||||||
if !opt.no_system {
|
if !opt.no_system {
|
||||||
match &distribution {
|
match &distribution {
|
||||||
Ok(distribution) => {
|
Ok(distribution) => {
|
||||||
report.push_result(execute(|| distribution.upgrade(&sudo, opt.dry_run), opt.no_retry)?);
|
report.push_result(execute(
|
||||||
|
|| distribution.upgrade(&sudo, opt.cleanup, opt.dry_run),
|
||||||
|
opt.no_retry,
|
||||||
|
)?);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
println!("Error detecting current distribution: {}", e);
|
println!("Error detecting current distribution: {}", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user