flodl_cli/libtorch/
manage.rs1use std::fs;
4use std::path::Path;
5
6use super::detect;
7
8pub fn remove_variant(root: &Path, variant: &str) -> Result<(), String> {
12 if !detect::is_valid_variant(root, variant) {
13 return Err(format!(
14 "'{}' is not an installed libtorch variant.\n\
15 Expected: libtorch/{}/lib/ to exist.",
16 variant, variant
17 ));
18 }
19
20 let variant_dir = root.join(format!("libtorch/{}", variant));
21
22 let was_active = detect::read_active(root)
24 .is_some_and(|info| info.path == variant);
25
26 fs::remove_dir_all(&variant_dir)
28 .map_err(|e| format!("cannot remove {}: {}", variant_dir.display(), e))?;
29
30 println!(" Removed: {}", variant);
31
32 if was_active {
34 let active_path = root.join("libtorch/.active");
35 let _ = fs::write(&active_path, "");
36 println!(" Cleared active variant (was pointing to removed variant).");
37 println!(" Run 'fdl libtorch activate <variant>' to set a new one.");
38 }
39
40 Ok(())
41}