Skip to main content

oxide_cli/addons/steps/
rename.rs

1use std::path::Path;
2
3use anyhow::{anyhow, Result};
4
5use crate::addons::manifest::RenameStep;
6
7use super::Rollback;
8
9pub fn execute_rename(step: &RenameStep, project_root: &Path) -> Result<Vec<Rollback>> {
10  let from = super::safe_join(project_root, &step.from, "rename source")?;
11  let to = super::safe_join(project_root, &step.to, "rename destination")?;
12
13  if !from.exists() {
14    return Err(anyhow!("{} does not exist", from.display()));
15  }
16  if to.exists() {
17    return Err(anyhow!("{} already exists", to.display()));
18  }
19
20  std::fs::rename(&from, &to)?;
21
22  Ok(vec![Rollback::RenameFile { from: to, to: from }])
23}
24