[package]
edition = "2021"
name = "bashrs"
version = "6.66.0"
authors = ["Pragmatic AI Labs"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust-to-Shell transpiler for deterministic bootstrap scripts"
homepage = "https://github.com/paiml/bashrs"
documentation = "https://docs.rs/bashrs"
readme = "README.md"
keywords = [
"shell",
"bash",
"transpiler",
"rust",
"scripting",
]
categories = [
"command-line-utilities",
"development-tools",
"compilers",
]
license = "MIT"
repository = "https://github.com/paiml/bashrs"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]
[features]
basic = []
compile = [
"tokio",
"zstd",
"tar",
"flate2",
"base64",
]
completions = []
default = [
"validation",
"pretty-errors",
"basic",
"compile",
"clap",
"tokio",
"tracing-subscriber",
"rand",
"rand_chacha",
"rustyline",
"sysinfo",
"watch",
]
full = [
"pattern-matching",
"loops",
"verification",
"optimization",
"lsp",
"completions",
"watch",
"compile",
"clap",
"tokio",
"tracing-subscriber",
"rand",
"rand_chacha",
"rustyline",
"sysinfo",
]
loops = []
lsp = [
"tower-lsp",
"tokio",
]
minimal = []
ml = [
"aprender",
"entrenar",
]
optimization = []
oracle = ["bashrs-oracle"]
pattern-matching = []
pretty-errors = []
property-tests = []
tui = [
"ratatui",
"crossterm",
]
validation = []
verification = []
watch = [
"notify",
"notify-debouncer-mini",
]
[lib]
name = "bashrs"
crate-type = ["rlib"]
path = "src/lib.rs"
[[bin]]
name = "bashrs"
path = "src/bin/bashrs.rs"
required-features = ["clap"]
[[bin]]
name = "quality-dashboard"
path = "src/bin/quality-dashboard.rs"
[[bin]]
name = "quality-gate"
path = "src/bin/quality-gate.rs"
[[bin]]
name = "rash-metrics"
path = "src/bin/rash-metrics.rs"
[[example]]
name = "baselines"
path = "examples/baselines.rs"
[[example]]
name = "contract_validation"
path = "examples/contract_validation.rs"
[[example]]
name = "conversation_generator"
path = "examples/conversation_generator.rs"
[[example]]
name = "cwe_mapping_demo"
path = "examples/cwe_mapping_demo.rs"
[[example]]
name = "evaluation_metrics"
path = "examples/evaluation_metrics.rs"
[[example]]
name = "explain_demo"
path = "examples/explain_demo.rs"
[[example]]
name = "fast_classify_export"
path = "examples/fast_classify_export.rs"
[[example]]
name = "generalization_tests"
path = "examples/generalization_tests.rs"
[[example]]
name = "installer_demo"
path = "examples/installer_demo.rs"
[[example]]
name = "label_audit"
path = "examples/label_audit.rs"
[[example]]
name = "linting_demo"
path = "examples/linting_demo.rs"
[[example]]
name = "makefile_purify_with_tests"
path = "examples/makefile_purify_with_tests.rs"
[[example]]
name = "optimizer_benchmark"
path = "examples/optimizer_benchmark.rs"
[[example]]
name = "quality_tools_demo"
path = "examples/quality_tools_demo.rs"
[[example]]
name = "safety_check"
path = "examples/safety_check.rs"
[[example]]
name = "shell_safety_classifier"
path = "examples/shell_safety_classifier.rs"
[[example]]
name = "shellsafetybench"
path = "examples/shellsafetybench.rs"
[[example]]
name = "ssc_data_pipeline"
path = "examples/ssc_data_pipeline.rs"
[[example]]
name = "ssc_report"
path = "examples/ssc_report.rs"
[[example]]
name = "ssc_workflow"
path = "examples/ssc_workflow.rs"
[[example]]
name = "tokenizer_validation"
path = "examples/tokenizer_validation.rs"
[[example]]
name = "transpiler_demo"
path = "examples/transpiler_demo.rs"
[[example]]
name = "xtask_custom_build"
path = "examples/xtask_custom_build.rs"
[[test]]
name = "book_validation"
path = "tests/book_validation.rs"
[[test]]
name = "canonical_matrix_test"
path = "tests/canonical_matrix_test.rs"
[[test]]
name = "canonical_matrix_test_matrix_prope"
path = "tests/canonical_matrix_test_matrix_prope.rs"
[[test]]
name = "cli_bench_tests"
path = "tests/cli_bench_tests.rs"
[[test]]
name = "cli_comply_tests"
path = "tests/cli_comply_tests.rs"
[[test]]
name = "cli_comply_tests_tests_comply_cli"
path = "tests/cli_comply_tests_tests_comply_cli.rs"
[[test]]
name = "cli_config_tests"
path = "tests/cli_config_tests.rs"
[[test]]
name = "cli_dockerfile_integration"
path = "tests/cli_dockerfile_integration.rs"
[[test]]
name = "cli_dockerfile_purify"
path = "tests/cli_dockerfile_purify.rs"
[[test]]
name = "cli_dockerfile_purify_tests_dockerfile"
path = "tests/cli_dockerfile_purify_tests_dockerfile.rs"
[[test]]
name = "cli_dockerfile_purify_tests_dockerfile_2"
path = "tests/cli_dockerfile_purify_tests_dockerfile_2.rs"
[[test]]
name = "cli_error_handling_tests"
path = "tests/cli_error_handling_tests.rs"
[[test]]
name = "cli_error_handling_tests_main"
path = "tests/cli_error_handling_tests_main.rs"
[[test]]
name = "cli_installer_tests"
path = "tests/cli_installer_tests.rs"
[[test]]
name = "cli_integration"
path = "tests/cli_integration.rs"
[[test]]
name = "cli_integration_tests_CLI"
path = "tests/cli_integration_tests_CLI.rs"
[[test]]
name = "cli_integration_tests_CLI_2"
path = "tests/cli_integration_tests_CLI_2.rs"
[[test]]
name = "cli_lint_changed_tests"
path = "tests/cli_lint_changed_tests.rs"
[[test]]
name = "cli_lint_exit_codes_tests"
path = "tests/cli_lint_exit_codes_tests.rs"
[[test]]
name = "cli_lint_perf_tests"
path = "tests/cli_lint_perf_tests.rs"
[[test]]
name = "cli_lsp_tests"
path = "tests/cli_lsp_tests.rs"
[[test]]
name = "cli_make_formatting"
path = "tests/cli_make_formatting.rs"
[[test]]
name = "cli_make_lint"
path = "tests/cli_make_lint.rs"
[[test]]
name = "cli_make_purify_with_tests"
path = "tests/cli_make_purify_with_tests.rs"
[[test]]
name = "cli_make_tests"
path = "tests/cli_make_tests.rs"
[[test]]
name = "cli_make_tests_tests_CLI"
path = "tests/cli_make_tests_tests_CLI.rs"
[[test]]
name = "cli_property_tests"
path = "tests/cli_property_tests.rs"
[[test]]
name = "cli_purify_tests"
path = "tests/cli_purify_tests.rs"
[[test]]
name = "cli_purify_tests_tests_PURIFY"
path = "tests/cli_purify_tests_tests_PURIFY.rs"
[[test]]
name = "cli_purify_type_tests"
path = "tests/cli_purify_type_tests.rs"
[[test]]
name = "cli_purify_with_tests"
path = "tests/cli_purify_with_tests.rs"
[[test]]
name = "cli_repl_tests"
path = "tests/cli_repl_tests.rs"
[[test]]
name = "cli_score_trend_tests"
path = "tests/cli_score_trend_tests.rs"
[[test]]
name = "cli_sem003_tests"
path = "tests/cli_sem003_tests.rs"
[[test]]
name = "cli_semantic_lint_tests"
path = "tests/cli_semantic_lint_tests.rs"
[[test]]
name = "cli_ssb_expansion_tests"
path = "tests/cli_ssb_expansion_tests.rs"
[[test]]
name = "cli_ssc_tests"
path = "tests/cli_ssc_tests.rs"
[[test]]
name = "cli_ssc_tests_tests_kaizen107_cl"
path = "tests/cli_ssc_tests_tests_kaizen107_cl.rs"
[[test]]
name = "cli_ssc_tests_tests_pmat142_corp"
path = "tests/cli_ssc_tests_tests_pmat142_corp.rs"
[[test]]
name = "cli_ssc_tests_tests_ssb002_conve"
path = "tests/cli_ssc_tests_tests_ssb002_conve.rs"
[[test]]
name = "cli_test_generate_tests"
path = "tests/cli_test_generate_tests.rs"
[[test]]
name = "cli_watch_tests"
path = "tests/cli_watch_tests.rs"
[[test]]
name = "config_004_integration_tests"
path = "tests/config_004_integration_tests.rs"
[[test]]
name = "corpus_tests"
path = "tests/corpus_tests.rs"
[[test]]
name = "corpus_tests_corpus_037"
path = "tests/corpus_tests_corpus_037.rs"
[[test]]
name = "corpus_tests_tests_CORPUS"
path = "tests/corpus_tests_tests_CORPUS.rs"
[[test]]
name = "corpus_tests_tests_CORPUS_2"
path = "tests/corpus_tests_tests_CORPUS_2.rs"
[[test]]
name = "differential_tests"
path = "tests/differential_tests.rs"
[[test]]
name = "dockerfile_dcode_tests"
path = "tests/dockerfile_dcode_tests.rs"
[[test]]
name = "dockerfile_dcode_tests_tests_d020_numeric"
path = "tests/dockerfile_dcode_tests_tests_d020_numeric.rs"
[[test]]
name = "dockerfile_transpile_tests"
path = "tests/dockerfile_transpile_tests.rs"
[[test]]
name = "edge_cases_test"
path = "tests/edge_cases_test.rs"
[[test]]
name = "encoder_roundtrip_contract_tests"
path = "tests/encoder_roundtrip_contract_tests.rs"
[[test]]
name = "falsification_probar_testing"
path = "tests/falsification_probar_testing.rs"
[[test]]
name = "falsification_probar_testing_tests_falsification"
path = "tests/falsification_probar_testing_tests_falsification.rs"
[[test]]
name = "golden_trace"
path = "tests/golden_trace.rs"
[[test]]
name = "integration_test_generator"
path = "tests/integration_test_generator.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "integration_tests_main"
path = "tests/integration_tests_main.rs"
[[test]]
name = "integration_tests_main_part2"
path = "tests/integration_tests_main_part2.rs"
[[test]]
name = "integration_tests_main_part3"
path = "tests/integration_tests_main_part3.rs"
[[test]]
name = "integration_tests_main_part4"
path = "tests/integration_tests_main_part4.rs"
[[test]]
name = "integration_tests_main_part5"
path = "tests/integration_tests_main_part5.rs"
[[test]]
name = "integration_tests_main_part6"
path = "tests/integration_tests_main_part6.rs"
[[test]]
name = "integration_tests_main_part7"
path = "tests/integration_tests_main_part7.rs"
[[test]]
name = "integration_tests_main_part8"
path = "tests/integration_tests_main_part8.rs"
[[test]]
name = "linter_bug_hunting"
path = "tests/linter_bug_hunting.rs"
[[test]]
name = "linter_bug_hunting_hunt"
path = "tests/linter_bug_hunting_hunt.rs"
[[test]]
name = "linter_coverage_contract_tests"
path = "tests/linter_coverage_contract_tests.rs"
[[test]]
name = "linter_det_idem_contract_tests"
path = "tests/linter_det_idem_contract_tests.rs"
[[test]]
name = "linter_docker_make_contract_tests"
path = "tests/linter_docker_make_contract_tests.rs"
[[test]]
name = "linter_integration"
path = "tests/linter_integration.rs"
[[test]]
name = "linter_security_contract_tests"
path = "tests/linter_security_contract_tests.rs"
[[test]]
name = "linter_tui_bug_hunting"
path = "tests/linter_tui_bug_hunting.rs"
[[test]]
name = "linter_tui_bug_hunting_hunt"
path = "tests/linter_tui_bug_hunting_hunt.rs"
[[test]]
name = "linter_tui_bug_hunting_tests_hunt_frame"
path = "tests/linter_tui_bug_hunting_tests_hunt_frame.rs"
[[test]]
name = "make_formatting_property_tests"
path = "tests/make_formatting_property_tests.rs"
[[test]]
name = "make_generators_mutation_tests"
path = "tests/make_generators_mutation_tests.rs"
[[test]]
name = "makefile_false_positives_fix"
path = "tests/makefile_false_positives_fix.rs"
[[test]]
name = "makefile_parsing"
path = "tests/makefile_parsing.rs"
[[test]]
name = "makefile_transpile_tests"
path = "tests/makefile_transpile_tests.rs"
[[test]]
name = "multi_shell_execution"
path = "tests/multi_shell_execution.rs"
[[test]]
name = "mutation_coverage_test"
path = "tests/mutation_coverage_test.rs"
[[test]]
name = "parse_performance"
path = "tests/parse_performance.rs"
[[test]]
name = "parser_bug_hunting"
path = "tests/parser_bug_hunting.rs"
[[test]]
name = "parser_bug_hunting_tests_control_flow"
path = "tests/parser_bug_hunting_tests_control_flow.rs"
[[test]]
name = "parser_probar_testing"
path = "tests/parser_probar_testing.rs"
[[test]]
name = "parser_probar_testing_tests_parser"
path = "tests/parser_probar_testing_tests_parser.rs"
[[test]]
name = "parser_properties"
path = "tests/parser_properties.rs"
[[test]]
name = "parser_soundness_contract_tests"
path = "tests/parser_soundness_contract_tests.rs"
[[test]]
name = "property_based_tests"
path = "tests/property_based_tests.rs"
[[test]]
name = "property_dockerfile_purify"
path = "tests/property_dockerfile_purify.rs"
[[test]]
name = "property_falsification_tests"
path = "tests/property_falsification_tests.rs"
[[test]]
name = "property_fix_safety"
path = "tests/property_fix_safety.rs"
[[test]]
name = "purification_contract_tests"
path = "tests/purification_contract_tests.rs"
[[test]]
name = "quality_gates_integration"
path = "tests/quality_gates_integration.rs"
[[test]]
name = "repl_test_harness"
path = "tests/repl_test_harness.rs"
[[test]]
name = "session8_tests"
path = "tests/session8_tests.rs"
[[test]]
name = "simulation_probar_testing"
path = "tests/simulation_probar_testing.rs"
[[test]]
name = "simulation_probar_testing_simulation_e"
path = "tests/simulation_probar_testing_simulation_e.rs"
[[test]]
name = "stdlib_extended_test"
path = "tests/stdlib_extended_test.rs"
[[test]]
name = "test_audit_command"
path = "tests/test_audit_command.rs"
[[test]]
name = "test_coverage_command"
path = "tests/test_coverage_command.rs"
[[test]]
name = "test_fix_safety_taxonomy"
path = "tests/test_fix_safety_taxonomy.rs"
[[test]]
name = "test_format_command"
path = "tests/test_format_command.rs"
[[test]]
name = "test_issue_001_autofix"
path = "tests/test_issue_001_autofix.rs"
[[test]]
name = "test_issue_005_lint_integration"
path = "tests/test_issue_005_lint_integration.rs"
[[test]]
name = "test_issue_005_zsh_detection"
path = "tests/test_issue_005_zsh_detection.rs"
[[test]]
name = "test_issue_010_dockerfile_scoring"
path = "tests/test_issue_010_dockerfile_scoring.rs"
[[test]]
name = "test_issue_016_makefile_false_positives"
path = "tests/test_issue_016_makefile_false_positives.rs"
[[test]]
name = "test_repl_003_002_cli"
path = "tests/test_repl_003_002_cli.rs"
[[test]]
name = "test_repl_command_execution"
path = "tests/test_repl_command_execution.rs"
[[test]]
name = "test_repl_explain_mode"
path = "tests/test_repl_explain_mode.rs"
[[test]]
name = "test_repl_mode_based_processing"
path = "tests/test_repl_mode_based_processing.rs"
[[test]]
name = "test_repl_utility_commands"
path = "tests/test_repl_utility_commands.rs"
[[test]]
name = "test_repl_variable_assignment"
path = "tests/test_repl_variable_assignment.rs"
[[test]]
name = "test_shell_specific_filtering"
path = "tests/test_shell_specific_filtering.rs"
[[test]]
name = "tool_consensus"
path = "tests/tool_consensus.rs"
[[test]]
name = "transpile_quality_tests"
path = "tests/transpile_quality_tests.rs"
[[test]]
name = "transpile_stdlib_tests"
path = "tests/transpile_stdlib_tests.rs"
[[test]]
name = "transpiler_bug_hunting"
path = "tests/transpiler_bug_hunting.rs"
[[test]]
name = "transpiler_core_contract_tests"
path = "tests/transpiler_core_contract_tests.rs"
[[test]]
name = "transpiler_tcode_tests"
path = "tests/transpiler_tcode_tests.rs"
[[test]]
name = "transpiler_tcode_tests_tests_t022_groupin"
path = "tests/transpiler_tcode_tests_tests_t022_groupin.rs"
[[test]]
name = "transpiler_tcode_tests_tests_t057_multipl"
path = "tests/transpiler_tcode_tests_tests_t057_multipl.rs"
[[test]]
name = "transpiler_tcode_tests_tests_t091_file"
path = "tests/transpiler_tcode_tests_tests_t091_file.rs"
[[test]]
name = "transpiler_tcode_tests_tests_t118_vec"
path = "tests/transpiler_tcode_tests_tests_t118_vec.rs"
[[test]]
name = "unified_testing_quality"
path = "tests/unified_testing_quality.rs"
[[test]]
name = "verificar_integration"
path = "tests/verificar_integration.rs"
[[test]]
name = "while_loop_test"
path = "tests/while_loop_test.rs"
[[bench]]
name = "bash_purification_benchmarks"
path = "benches/bash_purification_benchmarks.rs"
harness = false
[[bench]]
name = "fix_safety_bench"
path = "benches/fix_safety_bench.rs"
harness = false
[[bench]]
name = "lint_performance"
path = "benches/lint_performance.rs"
harness = false
[[bench]]
name = "make_parsing_bench"
path = "benches/make_parsing_bench.rs"
harness = false
[[bench]]
name = "make_purify_bench"
path = "benches/make_purify_bench.rs"
harness = false
[[bench]]
name = "makefile_benchmarks"
path = "benches/makefile_benchmarks.rs"
harness = false
[[bench]]
name = "tracing_overhead"
path = "benches/tracing_overhead.rs"
harness = false
[[bench]]
name = "transpilation"
path = "benches/transpilation.rs"
harness = false
[[bench]]
name = "validation"
path = "benches/validation.rs"
harness = false
[[bench]]
name = "verification"
path = "benches/verification.rs"
harness = false
[dependencies.anyhow]
version = "1.0.98"
[dependencies.aprender]
version = "0.27"
optional = true
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.bashrs-oracle]
version = "6.60"
optional = true
[dependencies.batuta-common]
version = "0.1"
[dependencies.blake3]
version = "1.8.2"
[dependencies.chrono]
version = "0.4"
features = [
"clock",
"serde",
]
default-features = false
[dependencies.clap]
version = "4.5.39"
features = ["derive"]
optional = true
[dependencies.crossterm]
version = "0.28"
optional = true
[dependencies.entrenar]
version = "0.7"
optional = true
[dependencies.flate2]
version = "1.1"
optional = true
[dependencies.glob]
version = "0.3"
[dependencies.lazy_static]
version = "1.5"
[dependencies.notify]
version = "7.0"
optional = true
[dependencies.notify-debouncer-mini]
version = "0.5"
optional = true
[dependencies.once_cell]
version = "1.21.3"
[dependencies.phf]
version = "0.13"
features = ["macros"]
[dependencies.proc-macro2]
version = "1.0.95"
features = ["span-locations"]
[dependencies.quote]
version = "1.0.40"
[dependencies.rand]
version = "0.9"
optional = true
[dependencies.rand_chacha]
version = "0.9"
optional = true
[dependencies.ratatui]
version = "0.29"
features = ["crossterm"]
optional = true
default-features = false
[dependencies.rayon]
version = "1.10"
[dependencies.regex]
version = "1.10"
[dependencies.rustyline]
version = "17.0"
optional = true
[dependencies.schemars]
version = "0.8"
[dependencies.serde]
version = "1.0"
features = [
"derive",
"std",
]
default-features = false
[dependencies.serde_json]
version = "1.0.140"
[dependencies.static_assertions]
version = "1.1"
[dependencies.syn]
version = "2.0"
features = [
"full",
"extra-traits",
]
[dependencies.sysinfo]
version = "0.31"
optional = true
[dependencies.tar]
version = "0.4"
optional = true
[dependencies.thiserror]
version = "2.0.12"
[dependencies.tokio]
version = "1.45.1"
features = [
"rt",
"rt-multi-thread",
"macros",
"io-util",
"io-std",
"fs",
"time",
"process",
]
optional = true
default-features = false
[dependencies.toml]
version = "0.8"
[dependencies.tower-lsp]
version = "0.20"
optional = true
[dependencies.tracing]
version = "0.1.41"
features = ["std"]
default-features = false
[dependencies.tracing-subscriber]
version = "0.3.19"
optional = true
[dependencies.zstd]
version = "0.13"
optional = true
[dev-dependencies.assert_cmd]
version = "2.1"
[dev-dependencies.criterion]
version = "0.6"
[dev-dependencies.jugar-probar]
version = "1.0"
[dev-dependencies.predicates]
version = "3.1"
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.rstest]
version = "0.25"
[dev-dependencies.tempfile]
version = "3.20.0"
[dev-dependencies.verificar]
version = "0.5"
[build-dependencies.serde]
version = "1"
features = ["derive"]
[build-dependencies.serde_yaml_ng]
version = "0.10"
[target.'cfg(target_os = "linux")'.dev-dependencies.renacer]
version = "0.7"
[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
checked_conversions = "warn"
dbg_macro = "warn"
doc_markdown = "allow"
fn_params_excessive_bools = "allow"
if_not_else = "allow"
implicit_hasher = "allow"
inconsistent_struct_constructor = "allow"
items_after_statements = "allow"
manual_assert = "allow"
manual_string_new = "allow"
match_same_arms = "allow"
match_wildcard_for_single_variants = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_pass_by_value = "allow"
option_if_let_else = "allow"
redundant_closure_for_method_calls = "allow"
redundant_else = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
single_match_else = "allow"
struct_excessive_bools = "allow"
struct_field_names = "allow"
todo = "warn"
too_many_lines = "allow"
trivially_copy_pass_by_ref = "allow"
unimplemented = "warn"
uninlined_format_args = "allow"
unnecessary_wraps = "allow"
unreadable_literal = "allow"
used_underscore_binding = "allow"
wildcard_imports = "allow"
[lints.clippy.expect_used]
level = "allow"
priority = 1
[lints.clippy.unwrap_used]
level = "allow"
priority = 1
[lints.rust]
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "deny"
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(kani)",
"cfg(coverage)",
"cfg(trybuild_no_target)",
]