use std::path::Path;
use color_eyre::eyre;
use smol::fs;
pub const CLI_COMMIT: &str = env!("WATERUI_CLI_COMMIT");
const METADATA_FILE: &str = ".water/metadata";
pub async fn ensure_valid(project_root: &Path) -> eyre::Result<()> {
let metadata_path = project_root.join(METADATA_FILE);
let water_dir = project_root.join(".water");
if water_dir.exists() {
let should_clean = if metadata_path.exists() {
let stored_commit = fs::read_to_string(&metadata_path).await.unwrap_or_default();
stored_commit.trim() != CLI_COMMIT
} else {
true
};
if should_clean {
tracing::info!("CLI version changed, cleaning .water directory");
fs::remove_dir_all(&water_dir).await?;
}
}
if !water_dir.exists() {
fs::create_dir_all(&water_dir).await?;
fs::write(&metadata_path, CLI_COMMIT).await?;
}
Ok(())
}