oops-sh 0.2.0

Undo for your terminal: run any command in a sandbox, then undo or commit it. Installs the `oops` binary (Linux via OverlayFS, macOS via APFS snapshots; other platforms refuse to run rather than run unsandboxed).
[package]
# Crate name vs command name: the crates.io name `oops` is squatted, so the
# crate is `oops-sh` while the installed binary stays `oops` (see [[bin]]).
name = "oops-sh"
version = "0.2.0"
edition = "2021"
description = "Undo for your terminal: run any command in a sandbox, then undo or commit it. Installs the `oops` binary (Linux via OverlayFS, macOS via APFS snapshots; other platforms refuse to run rather than run unsandboxed)."
license = "MIT OR Apache-2.0"
repository = "https://github.com/oops-sh/oops"
readme = "README.md"
keywords = ["undo", "sandbox", "cli", "safety", "overlayfs"]
categories = ["command-line-utilities", "development-tools", "filesystem"]
# Anchored: cargo include globs use gitignore semantics, so an unanchored
# `README.md` would also pull in nested ones (e.g. spikes/apfs/README.md).
include = ["/src/**", "/README.md", "/LICENSE-MIT", "/LICENSE-APACHE"]

[[bin]]
name = "oops"
path = "src/main.rs"

[dependencies]
anyhow = "1.0.103"
clap = { version = "4.6.1", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"

[target.'cfg(target_os = "macos")'.dependencies]
libc = "0.2.186"

[target.'cfg(target_os = "linux")'.dependencies]
libc = "0.2.186"
nix = { version = "0.31.3", features = ["mount", "sched", "fs"] }

[target.'cfg(target_os = "linux")'.dev-dependencies]
libc = "0.2.186"

[dev-dependencies]
serde_json = "1.0.150"
tempfile = "3.27.0"