use iso_code::{Config, CreateOptions, DeleteOptions, Manager, ReflinkMode};
use std::env;
use std::path::PathBuf;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let repo = env::args()
.nth(1)
.map(PathBuf::from)
.unwrap_or_else(|| env::current_dir().expect("cannot determine cwd"));
let mut config = Config::default();
config.max_worktrees = 5;
config.min_free_disk_mb = 1000;
config.disk_threshold_percent = 80;
config.creator_name = "my-orchestrator".to_string();
config.offline = true;
let mgr = Manager::new(&repo, config)?;
let mut opts = CreateOptions::default();
opts.base = Some("main".to_string()); opts.lock = true; opts.lock_reason = Some("automated test run".to_string());
opts.reflink_mode = ReflinkMode::Preferred;
opts.allocate_port = true;
let worktree_path = repo.join("../custom-worktree");
let (handle, _) = mgr.create("feature/custom", &worktree_path, opts)?;
println!("Created locked worktree:");
println!(" path: {}", handle.path.display());
println!(" state: {:?}", handle.state);
println!(" port: {:?}", handle.port);
let mut delete_opts = DeleteOptions::default();
delete_opts.force_locked = true;
mgr.delete(&handle, delete_opts)?;
println!("Force-deleted locked worktree");
Ok(())
}