use super::{json_pretty, resolve_env_id, EXIT_SUCCESS}; use karapace_core::{Engine, StoreLock}; use karapace_store::StoreLayout; use std::path::Path; pub fn run( engine: &Engine, store_path: &Path, env_id: &str, snapshot_hash: &str, json: bool, ) -> Result { let layout = StoreLayout::new(store_path); let _lock = StoreLock::acquire(&layout.lock_file()).map_err(|e| format!("store lock: {e}"))?; let resolved = resolve_env_id(engine, env_id)?; engine .restore(&resolved, snapshot_hash) .map_err(|e| e.to_string())?; if json { let payload = serde_json::json!({ "env_id": resolved, "restored_snapshot": snapshot_hash, }); println!("{}", json_pretty(&payload)?); } else { println!("restored {env_id} from snapshot {snapshot_hash}"); } Ok(EXIT_SUCCESS) }