Avoid panic when the release cache is empty
This commit is contained in:
@ -817,26 +817,29 @@ pub fn gc(config_file: &str) -> Result<(), String> {
|
|||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
releases.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); // order by newest releases
|
releases.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); // order by newest releases
|
||||||
|
|
||||||
let old_releases = releases.split_off(5); // Delete all but the 5 newest releases
|
const MAX_CACHE_LEN: usize = 5;
|
||||||
|
if releases.len() > MAX_CACHE_LEN {
|
||||||
|
let old_releases = releases.split_off(MAX_CACHE_LEN);
|
||||||
|
|
||||||
if !old_releases.is_empty() {
|
if !old_releases.is_empty() {
|
||||||
let progress_bar = new_spinner_progress_bar();
|
let progress_bar = new_spinner_progress_bar();
|
||||||
progress_bar.set_length(old_releases.len() as u64);
|
progress_bar.set_length(old_releases.len() as u64);
|
||||||
progress_bar.set_style(
|
progress_bar.set_style(
|
||||||
ProgressStyle::default_bar()
|
ProgressStyle::default_bar()
|
||||||
.template(&format!(
|
.template(&format!(
|
||||||
"{}{}{}",
|
"{}{}{}",
|
||||||
"{spinner:.green} ",
|
"{spinner:.green} ",
|
||||||
RECYCLING,
|
RECYCLING,
|
||||||
"Removing old releases [{bar:40.cyan/blue}] {pos}/{len} ({eta})"
|
"Removing old releases [{bar:40.cyan/blue}] {pos}/{len} ({eta})"
|
||||||
))
|
))
|
||||||
.progress_chars("=> "),
|
.progress_chars("=> "),
|
||||||
);
|
);
|
||||||
for (release, _modified_type) in old_releases {
|
for (release, _modified_type) in old_releases {
|
||||||
progress_bar.inc(1);
|
progress_bar.inc(1);
|
||||||
let _ = fs::remove_dir_all(&release);
|
let _ = fs::remove_dir_all(&release);
|
||||||
|
}
|
||||||
|
progress_bar.finish_and_clear();
|
||||||
}
|
}
|
||||||
progress_bar.finish_and_clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Reference in New Issue
Block a user