This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / knot2 / crates / knot-maintenance / src / prune.rs
828 B 31 lines
1use std::collections::HashSet; 2use std::path::{Path, PathBuf}; 3use std::time::Duration; 4 5use knot_types::Oid; 6 7use crate::fsio; 8use crate::{FileCount, MaintError, ObjectCount, PruneReport}; 9 10pub fn run( 11 objects_dir: &Path, 12 reachable: &HashSet<Oid>, 13 loose: &[(Oid, PathBuf)], 14 grace: Duration, 15) -> Result<PruneReport, MaintError> { 16 let removed = loose 17 .iter() 18 .filter(|(oid, _)| !reachable.contains(oid)) 19 .filter(|(_, path)| fsio::older_than(path, grace)) 20 .filter(|(_, path)| std::fs::remove_file(path).is_ok()) 21 .count(); 22 if removed > 0 { 23 knot_resource::fsync_path(objects_dir)?; 24 } 25 Ok(PruneReport { 26 removed: FileCount::new(removed), 27 removed_packs: FileCount::new(0), 28 crufted: ObjectCount::new(0), 29 ran: true, 30 }) 31}