Avoid panic when the release cache is empty

This commit is contained in:
Michael Vines
2021-02-03 09:32:57 -08:00
parent eacf9209f7
commit ba0aa706e4

View File

@ -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(())