diff options
Diffstat (limited to 'src/clean.rs')
-rw-r--r-- | src/clean.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/clean.rs b/src/clean.rs new file mode 100644 index 0000000..a34a912 --- /dev/null +++ b/src/clean.rs | |||
@@ -0,0 +1,45 @@ | |||
1 | use std::path::Path; | ||
2 | |||
3 | use crate::cli::Args; | ||
4 | |||
5 | fn is_cargo_toml(path: &Path) -> bool { | ||
6 | path.is_file() && (path.file_name().unwrap() == "Cargo.toml") | ||
7 | } | ||
8 | |||
9 | pub fn handle_path(path: &Path, iter: u8, cli: &Args) { | ||
10 | if is_cargo_toml(path) { | ||
11 | let abs_path = std::fs::canonicalize(path).unwrap(); | ||
12 | println!("Clean: {}", abs_path.as_path().to_str().unwrap()); | ||
13 | |||
14 | #[cfg(all(feature = "int-cargo", feature = "ext-cargo"))] | ||
15 | { | ||
16 | if cli.ext_cargo { | ||
17 | crate::cargo::clean_ext(abs_path.as_path(), cli); | ||
18 | } else { | ||
19 | crate::cargo::clean_int(abs_path.as_path(), cli).unwrap(); | ||
20 | }; | ||
21 | } | ||
22 | |||
23 | #[cfg(all(feature = "int-cargo", not(feature = "ext-cargo")))] | ||
24 | { | ||
25 | crate::cargo::clean_int(abs_path.as_path(), cli).unwrap(); | ||
26 | } | ||
27 | |||
28 | #[cfg(all(feature = "ext-cargo", not(feature = "int-cargo")))] | ||
29 | { | ||
30 | crate::cargo::clean_ext(abs_path.as_path(), cli); | ||
31 | } | ||
32 | |||
33 | return; | ||
34 | }; | ||
35 | if path.is_dir() { | ||
36 | if iter >= cli.level { | ||
37 | return; | ||
38 | }; | ||
39 | let paths = std::fs::read_dir(path).unwrap(); | ||
40 | for path in paths { | ||
41 | let p = path.unwrap(); | ||
42 | handle_path(&p.path(), iter + 1, cli); | ||
43 | } | ||
44 | } | ||
45 | } | ||