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 {
17        path: path.clone(),
18        original,
19      });
20      std::fs::remove_file(&path)?;
21    }
22  }
23
24  Ok(rollbacks)
25}