suture-cli 1.0.0

A patch-based version control system with semantic merge for structured files
pub(crate) async fn cmd_reset(target: &str, mode: &str) -> Result<(), Box<dyn std::error::Error>> {
    use suture_core::repository::ResetMode;

    let reset_mode = match mode {
        "soft" => ResetMode::Soft,
        "mixed" => ResetMode::Mixed,
        "hard" => ResetMode::Hard,
        _ => {
            return Err(format!(
                "invalid reset mode: '{}' (expected soft, mixed, hard)",
                mode
            )
            .into());
        }
    };

    let mut repo = suture_core::repository::Repository::open(std::path::Path::new("."))?;
    let target_id = repo.reset(target, reset_mode)?;
    println!("HEAD is now at {}", target_id);
    Ok(())
}