[package]
name = "rusty-sponge"
version = "0.1.0"
edition = "2024"
rust-version = "1.85"
authors = ["James Han <jsh562@users.noreply.github.com>"]
license = "MIT OR Apache-2.0"
description = "Soak up stdin and write it atomically to a file — a Rust port of moreutils `sponge` with strict-compat mode, configurable spill-to-tempfile, and a typed library API."
repository = "https://github.com/jsh562/rusty-sponge"
homepage = "https://github.com/jsh562/rusty-sponge"
documentation = "https://docs.rs/rusty-sponge"
readme = "README.md"
keywords = ["sponge", "moreutils", "atomic", "rewrite", "cli"]
categories = ["command-line-utilities", "filesystem"]
[features]
default = ["cli"]
cli = ["dep:clap", "dep:clap_complete", "dep:anyhow", "dep:signal-hook"]
sponge-alias = ["cli"]
bench = ["dep:criterion"]
[dependencies]
tempfile = "3"
thiserror = "2"
clap = { version = "4", features = ["derive", "env"], optional = true }
clap_complete = { version = "4", optional = true }
anyhow = { version = "1", optional = true }
signal-hook = { version = "0.3", optional = true }
criterion = { version = "0.5", optional = true }
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = ["Win32_System_Console", "Win32_Foundation"] }
[dev-dependencies]
insta = { version = "1", features = ["yaml"] }
assert_cmd = "2"
predicates = "3"
tempfile = "3"
static_assertions = "1"
[target.'cfg(target_os = "linux")'.dev-dependencies]
libc = "0.2"
[[bin]]
name = "rusty-sponge"
path = "src/main.rs"
required-features = ["cli"]
[[bin]]
name = "sponge"
path = "src/bin/sponge.rs"
required-features = ["sponge-alias"]
[[bench]]
name = "throughput"
harness = false
required-features = ["bench"]
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ archive-suffix }"
bin-dir = "{ name }-v{ version }-{ target }/{ bin }{ binary-ext }"
pkg-fmt = "tgz"
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-fmt = "zip"
[profile.release]
lto = "thin"
codegen-units = 1
strip = "symbols"