[package]
name = "bashrs"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description.workspace = true
readme.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]
[lints]
workspace = true
[[bin]]
name = "bashrs"
path = "src/bin/bashrs.rs"
required-features = ["clap"]
[lib]
crate-type = ["rlib"]
[dependencies]
syn.workspace = true
quote.workspace = true
proc-macro2.workspace = true
serde.workspace = true
serde_json.workspace = true
toml = "0.8"
anyhow.workspace = true
thiserror.workspace = true
clap = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
tracing.workspace = true
tracing-subscriber = { workspace = true, optional = true }
blake3.workspace = true
once_cell.workspace = true
lazy_static.workspace = true
phf.workspace = true
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
rand = { version = "0.9", optional = true }
rand_chacha = { version = "0.9", optional = true }
batuta-common = "0.1"
static_assertions = "1.1"
rayon = "1.10"
regex = "1.10"
glob = "0.3"
rustyline = { workspace = true, optional = true }
sysinfo = { version = "0.31", optional = true }
schemars = "0.8"
bashrs-oracle = { version = "6.60", optional = true }
aprender = { version = "0.27", optional = true }
entrenar = { version = "0.7", optional = true }
notify = { version = "7.0", optional = true }
notify-debouncer-mini = { version = "0.5", optional = true }
tower-lsp = { version = "0.20", optional = true }
zstd = { version = "0.13", optional = true }
tar = { version = "0.4", optional = true }
flate2 = { version = "1.1", optional = true }
base64 = { version = "0.22", optional = true }
ratatui = { version = "0.29", default-features = false, features = ["crossterm"], optional = true }
crossterm = { version = "0.28", optional = true }
[features]
default = ["validation", "pretty-errors", "basic", "compile", "clap", "tokio", "tracing-subscriber", "rand", "rand_chacha", "rustyline", "sysinfo", "watch"]
minimal = []
full = ["pattern-matching", "loops", "verification", "optimization", "lsp", "completions", "watch", "compile", "clap", "tokio", "tracing-subscriber", "rand", "rand_chacha", "rustyline", "sysinfo"]
basic = []
compile = ["tokio", "zstd", "tar", "flate2", "base64"]
pattern-matching = []
loops = []
verification = []
optimization = []
validation = []
pretty-errors = []
lsp = ["tower-lsp", "tokio"]
completions = []
watch = ["notify", "notify-debouncer-mini"]
oracle = ["bashrs-oracle"]
ml = ["aprender", "entrenar"]
tui = ["ratatui", "crossterm"]
property-tests = []
[dev-dependencies]
tempfile.workspace = true
criterion.workspace = true
proptest.workspace = true
rstest.workspace = true
assert_cmd = "2.1"
predicates = "3.1"
verificar = "0.5"
jugar-probar = "1.0"
[target.'cfg(target_os = "linux")'.dev-dependencies]
renacer = "0.7"
[[bench]]
name = "transpilation"
harness = false
[[bench]]
name = "verification"
harness = false
[[bench]]
name = "make_parsing_bench"
harness = false
[[bench]]
name = "make_purify_bench"
harness = false
[[bench]]
name = "fix_safety_bench"
harness = false
[[bench]]
name = "makefile_benchmarks"
harness = false
[[bench]]
name = "tracing_overhead"
harness = false
[[bench]]
name = "lint_performance"
harness = false
[[bench]]
name = "bash_purification_benchmarks"
harness = false
[[bench]]
name = "validation"
harness = false
[build-dependencies]
serde = { version = "1", features = ["derive"] }
serde_yaml_ng = "0.10"