ct_tracker_lib/projects/
delete.rs

1use super::super::ct_fs::default_path;
2use super::errors;
3use super::persistent;
4use super::project_path;
5
6use glob::glob;
7use std::path::PathBuf;
8
9/// Delete all projects on this PC
10pub fn all(_print_progress: bool) -> errors::CtResult<()> {
11    let time_path = default_path::time_path()?;
12    let paths: Vec<PathBuf> = glob(format!("{}/*.json", time_path.to_str().unwrap()).as_str())
13        .unwrap()
14        .filter(|p| match p {
15            Ok(_) => true,
16            Err(e) => {
17                bunt::eprintln!("{$red}GlobError: {:?}{/$}", e);
18                false
19            }
20        })
21        .map(|p| p.unwrap())
22        .collect();
23    for p in paths {
24        // TODO v0.2.0 -> somehow add ability to print format -> Return iterator or something
25        // if print_progress {
26        //     if let Ok(project) = load_proj(&p) {
27        //         bunt::println!(
28        //             "Deleting project {[blue]}... (Time spent: {})",
29        //             project.name(),
30        //             DurationWrapper::wrap(project.duration())
31        //         );
32        //     }
33        // }
34        std::fs::remove_file(p)?;
35    }
36    persistent::clear_store()?;
37    Ok(())
38}
39
40pub fn named(name: &str) -> errors::CtResult<()> {
41    std::fs::remove_file(project_path(name)?)?;
42    persistent::delete_stored_if(name)?;
43    Ok(())
44}