[package]
name = "rust-bash"
version = "0.3.0"
edition = "2024"
description = "A sandboxed bash interpreter for AI Agents with a virtual filesystem"
license = "MIT"
keywords = ["bash", "shell", "interpreter", "sandbox", "virtual-filesystem"]
categories = ["command-line-utilities", "development-tools", "parser-implementations", "wasm", "emulators"]
repository = "https://github.com/shantanugoel/rust-bash"
homepage = "https://rustbash.dev"
documentation = "https://docs.rs/rust-bash"
readme = "README.md"
exclude = [
"packages/",
"package-lock.json",
".github/",
"docs/plans/",
"cbindgen.toml",
"include/",
"scripts/",
"AGENTS.md",
]
[lib]
crate-type = ["lib", "cdylib"]
[features]
default = ["cli", "network", "native-fs"]
cli = ["dep:clap", "dep:rustyline"]
ffi = ["dep:serde"]
wasm = ["dep:wasm-bindgen", "dep:js-sys", "dep:serde", "dep:serde-wasm-bindgen"]
network = ["dep:ureq", "dep:url"]
native-fs = []
[[bin]]
name = "rust-bash"
required-features = ["cli"]
[dependencies]
base64 = "0.22"
bitflags = "2.11.0"
brush-parser = "0.3.0"
chrono = "0.4"
clap = { version = "4.6.0", features = ["derive"], optional = true }
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
jaq-core = "3.0.0-gamma"
jaq-json = "2.0.0-gamma"
jaq-std = "3.0.0-gamma"
md-5 = "0.10"
parking_lot = "0.12.5"
regex = "1.12.3"
rustyline = { version = "17.0.2", optional = true }
serde = { version = "1.0.228", features = ["derive"], optional = true }
serde_json = "1"
sha1 = "0.10"
sha2 = "0.10"
similar = "2.7.0"
tar = "0.4"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
ureq = { version = "3", optional = true }
url = { version = "2.5.8", optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = { version = "0.2.114", optional = true }
js-sys = { version = "0.3.91", optional = true }
web-time = "1.1.0"
serde-wasm-bindgen = { version = "0.6.5", optional = true }
chrono = { version = "0.4", features = ["wasmbind"] }
[dev-dependencies]
assert_cmd = "2.2.0"
datatest-stable = "0.3.3"
insta = "1.46.3"
predicates = "3.1.4"
rustyline = "17.0.2"
serde = { version = "1.0.228", features = ["derive"] }
tempfile = "3.27.0"
toml = "1.0.7"
toml_edit = "0.25.5"
[[test]]
name = "comparison"
harness = false
[[test]]
name = "spec_tests"
harness = false
[[test]]
name = "oils_spec"
harness = false
[profile.release-wasm]
inherits = "release"
opt-level = "z"
lto = true
codegen-units = 1
strip = true
panic = "abort"