Skip to main content

oxide_cli/addons/steps/
delete.rs

1use std::path::Path;
2
3use anyhow::Result;
4
5use crate::addons::manifest::DeleteStep;
6
7use super::{Rollback, resolve_target};
8
9pub fn execute_delete(step: &DeleteStep, project_root: &Path) -> Result<Vec<Rollback>> {
10  let paths = resolve_target(&step.target, project_root)?;
11  let mut rollbacks = Vec::new();
12
13  for path in paths {
14    if path.exists() {
15      let original = std::fs::read(&path)?;
16      rollbacks.push(Rollback::RestoreFile { path: path.clone(), original });
17      std::fs::remove_file(&path)?;
18    }
19  }
20
21  Ok(rollbacks)
22}