1#[cfg(target_family = "windows")]
2use remove_dir_all::remove_dir_all;
3
4#[cfg(not(target_family = "windows"))]
5use std::fs::remove_dir_all;
6
7use std::io::Result;
8use std::path::Path;
9
10pub enum Clean {
11 Cleaned,
12 NotCleaned,
13}
14
15pub trait DoCleanUp {
16 fn do_cleanup(&self, path_to_remove: &Path) -> Result<Clean>;
17}
18
19#[derive(Default)]
20pub struct ProperCleaner;
21impl DoCleanUp for ProperCleaner {
22 fn do_cleanup(&self, path_to_remove: &Path) -> Result<Clean> {
23 remove_dir_all(path_to_remove).map(|_| Clean::Cleaned)
24 }
25}
26
27#[derive(Default)]
28pub struct DryRunCleaner;
29impl DoCleanUp for DryRunCleaner {
30 fn do_cleanup(&self, _: &Path) -> Result<Clean> {
32 Ok(Clean::NotCleaned)
33 }
34}