bashkit 0.4.1__tar.gz → 0.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bashkit-0.4.1 → bashkit-0.6.0}/Cargo.lock +98 -8
- {bashkit-0.4.1 → bashkit-0.6.0}/Cargo.toml +13 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/PKG-INFO +3 -1
- {bashkit-0.4.1/crates/bashkit-python → bashkit-0.6.0}/README.md +2 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/Cargo.toml +16 -5
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/README.md +6 -7
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/clap-builtins.md +5 -18
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/custom_builtins.md +4 -5
- bashkit-0.6.0/crates/bashkit/src/builtins/cat.rs +193 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/clap_env.rs +255 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/compgen.rs +4 -4
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/export.rs +15 -6
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/fileops.rs +145 -52
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/cat_args.rs +145 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/extendedbigdecimal.rs +239 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/argument.rs +202 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/escape.rs +151 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/human.rs +37 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/mod.rs +347 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/num_format.rs +544 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format/spec.rs +527 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/format_support.rs +126 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/ls_args.rs +971 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/mktemp_args.rs +161 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/mod.rs +48 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/num_parser.rs +441 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/od_args.rs +307 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/readlink_args.rs +136 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/realpath_args.rs +206 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/shuf_args.rs +161 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/stat_args.rs +107 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/tac_args.rs +85 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/tee_args.rs +139 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/generated/truncate_args.rs +112 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/hextools.rs +97 -48
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/inspect.rs +62 -35
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/args.rs +38 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/mod.rs +57 -2
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/regex_compat.rs +41 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/tests.rs +67 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ls.rs +264 -45
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/mod.rs +176 -9
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/path.rs +165 -70
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/pipeline.rs +55 -28
- bashkit-0.6.0/crates/bashkit/src/builtins/printf.rs +609 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/shuf.rs +453 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/dot_commands.rs +41 -16
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/engine.rs +12 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/mod.rs +41 -14
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/tests.rs +75 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/cmd.rs +34 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/russh_handler.rs +46 -10
- bashkit-0.6.0/crates/bashkit/src/builtins/textrev.rs +192 -0
- bashkit-0.6.0/crates/bashkit/src/builtins/truncate.rs +413 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/credential.rs +65 -20
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/limits.rs +147 -3
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/memory.rs +26 -16
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/mountable.rs +9 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/overlay.rs +2 -3
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/realfs.rs +268 -9
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/traits.rs +8 -4
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interop/fs.rs +106 -14
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interpreter/mod.rs +42 -6
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/lib.rs +77 -25
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/network/allowlist.rs +89 -10
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/network/client.rs +267 -36
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/network/mod.rs +1 -1
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/execute.rs +6 -3
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/extension.rs +41 -8
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/mod.rs +110 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/scripted_tool/toolset.rs +2 -2
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/snapshot.rs +7 -2
- bashkit-0.6.0/crates/bashkit/src/testing.rs +412 -0
- bashkit-0.6.0/crates/bashkit/src/tool_def.rs +1275 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/blackbox_security_tests.rs +258 -0
- bashkit-0.6.0/crates/bashkit/tests/coreutils_differential_tests.rs +548 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/custom_builtins_tests.rs +0 -11
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/realfs_tests.rs +153 -23
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/security_audit_pocs.rs +125 -0
- bashkit-0.6.0/crates/bashkit/tests/shuf_resource_tests.rs +30 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/snapshot_tests.rs +66 -6
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/cat.test.sh +81 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/help-flag.test.sh +3 -3
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/ln.test.sh +12 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/ls.test.sh +64 -0
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/mktemp.test.sh +49 -0
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/od.test.sh +43 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/path.test.sh +2 -1
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/readlink.test.sh +55 -0
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/shuf.test.sh +65 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/stat.test.sh +24 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tee.test.sh +16 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/textrev.test.sh +16 -0
- bashkit-0.6.0/crates/bashkit/tests/spec_cases/bash/truncate.test.sh +105 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_integration_tests.rs +44 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_security_tests.rs +4 -7
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/threat_model_tests.rs +76 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/unicode_security_tests.rs +63 -66
- bashkit-0.6.0/crates/bashkit/tests/workflow_security_tests.rs +85 -0
- {bashkit-0.4.1 → bashkit-0.6.0/crates/bashkit-python}/README.md +2 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/src/lib.rs +58 -10
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_network_credentials.py +21 -0
- bashkit-0.4.1/crates/bashkit/src/builtins/cat.rs +0 -109
- bashkit-0.4.1/crates/bashkit/src/builtins/printf.rs +0 -766
- bashkit-0.4.1/crates/bashkit/src/builtins/textrev.rs +0 -132
- bashkit-0.4.1/crates/bashkit/src/testing.rs +0 -155
- bashkit-0.4.1/crates/bashkit/src/tool_def.rs +0 -440
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/__init__.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/_bashkit.pyi +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/deepagents.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/langchain.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/py.typed +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/bashkit/pydantic_ai.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/benches/parallel_execution.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/benches/sqlite.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/compatibility.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/credential-injection.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/hooks.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/jq.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/live_mounts.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/logging.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/python.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/sqlite.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/ssh.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/threat-model.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/docs/typescript.md +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/agent_tool.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/basic.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/clap_builtin.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/clap_builtin_subcommands.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/custom_backend.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/custom_builtins.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/custom_filesystem_impl.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/custom_fs.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/git_workflow.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/live_mounts.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/python_external_functions.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/python_scripts.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/realfs_readonly.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/realfs_readwrite.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/resource_limits.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/scripted_tool.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/show_tool_output.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/sqlite_basic.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/sqlite_workflow.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/ssh_supabase.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/streaming_output.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/text_files.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/text_processing.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/typescript_external_functions.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/typescript_scripts.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/examples/virtual_identity.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/proptest-regressions/builtins/sqlite/tests.txt +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/alias.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/archive.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/arg_parser.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/assert.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/awk.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/base64.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/bc.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/caller.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/checksum.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/clear.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/column.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/comm.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/csv.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/curl.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/cuttr.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/date.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/diff.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/dirstack.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/disk.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/dotenv.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/echo.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/environ.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/envsubst.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/expand.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/expr.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/fc.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/flow.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/fold.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/client.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/cmd.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/config.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/git/mod.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/glob_cmd.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/grep.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/headtail.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/help.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/http.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/iconv.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/introspect.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/join.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/compat.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/convert.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/errors.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/jq/format.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/json.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/log.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/mapfile.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/mkfifo.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/navigation.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/nl.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/numfmt.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/parallel.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/paste.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/patch.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/python.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/read.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/retry.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/rg.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/search_common.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sed.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/semver.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/seq.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sleep.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sortuniq.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/source.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/split.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/formatter.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/parser.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/sqlite/vfs_io.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/allowlist.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/client.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/config.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/handler.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/ssh/mod.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/strings.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/system.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/template.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/timeout.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/tomlq.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/trap.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/tree.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/typescript.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/vars.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/verify.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/wait.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/wc.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/yaml.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/yes.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/builtins/zip_cmd.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/error.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/backend.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/mod.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/posix.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/fs/search.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/hooks.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interop/mod.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interpreter/glob.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interpreter/jobs.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/interpreter/state.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/limits.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/logging_impl.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/network/bot_auth.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/ast.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/budget.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/lexer.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/mod.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/span.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/parser/tokens.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/tool.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/src/trace.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/allexport_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/awk_fuzz_scaffold_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/awk_newline_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/awk_pattern_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/awk_printf_expr_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/awk_range_pattern_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/background_exec_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/bash_source_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/builtin_error_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/byte_range_panic_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/cancellation_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/cmdsub_quote_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/coproc_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/credential_injection_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/custom_fs_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/dev_null_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/final_env_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/find_multi_path_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/git_advanced_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/git_inspection_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/git_integration_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/git_remote_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/git_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/harness_example_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/history_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_1175_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_274_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_275_279_282_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_276_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_277_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_289_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_290_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_291_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_853_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_872_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_873_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/issue_875_test.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/jq_fuzz_scaffold_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/live_mount_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/logging_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/mkfifo_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/nested_subscript_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/network_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/output_truncation_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/overlay_path_validation_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/proptest_differential.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/proptest_security.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/python_integration_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/python_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/regex_limit_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/release_profile_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/script_execution_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/security_failpoint_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/set_e_and_or_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_discover_rank.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_generate_url.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/azure_query_capacity.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/helm_validate_chart.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/jwt_test_setup.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_download_asset.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_fetch.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/stitch_verify_setup.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/superpowers_find_polluter.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_fixtures/vercel_deploy.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/skills_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/source_function_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/awk.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/delete-array.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/dev-stderr.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/eval-bugs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/filename.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/awk/getline-file.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/alias.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/append_redirect.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arith-dynamic.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arithmetic-base-expansion.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arithmetic.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/array-slicing.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/array-splat.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/arrays.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/assoc-arrays.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/awk-printf-width.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/background.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-c-exports.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-command.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-flags.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-source-var.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bash-stdin-pipe.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/bc.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/blackbox-edge-cases.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/blackbox-exploration.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/brace-expansion.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/brace_expansion_lookahead.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/checksum.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/chown-kill.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cmd-suggestions.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cmdsub_depth_unquoted.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/column.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/comm.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command-not-found.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command-subst.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/command_v.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/compgen-path.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/conditional-short-circuit.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/conditional.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/control-flow.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/cuttr.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/date.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/declare.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/df.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/diff.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/dirstack.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/du.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/echo.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/empty-bodies.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/env.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/errexit.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/eval-bugs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-command.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-redirect.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exec-fd-variable.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/exit-status.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/expr.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/extglob.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/file.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/fileops.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/find.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/functions.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/getopts.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/glob-options.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/glob_match_cap.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/globs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/gzip.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/headtail.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/heredoc-edge.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/heredoc.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/herestring.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/hextools.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/history.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/indirect-expansion.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/less.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/memory_budget_desync.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nameref-assoc.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nameref.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/negative-tests.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nl.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/nounset.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/numfmt.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/parse-errors.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/paste-flags.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/paste.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/pipes-redirects.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/printenv.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/printf.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/procsub.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/quote.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/read-builtin.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/recursive-cmdsub.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/regex-limit.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/replace_pattern_limit.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/script-exec.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/seq.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/set-allexport.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/shell-grammar.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/sleep.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/sortuniq.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/source.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/string-ops.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/strings.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/subprocess-isolation.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/subshell.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tar.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tar_create.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/temp-binding.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/test-operators.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/test-tty.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/time.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/timeout.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/tree.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/type.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/unicode.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/unset-exported-var.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/var-op-test.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/variables.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/wait.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/watch.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/wc.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/word-split.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/bash/xargs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/eval-bugs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/grep.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/grep/rg.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/jq/jq.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/python/env_leak.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/python/python.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/sed/eval-bugs.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/sed/sed.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_cases/typescript/typescript.test.sh +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_runner.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/spec_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_compat_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_differential_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/sqlite_fuzz_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/ssh_builtin_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/ssh_supabase_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/stack_overflow_regression_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/subst_depth_limit_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/symlink_overlay_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/tty_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/typescript_integration_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/typescript_security_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/unset_function_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit/tests/urandom_tests.rs +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/Cargo.toml +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/bash_basics.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/custom_filesystem_interop.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/data_pipeline.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/fastapi_async_tool.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/jupyter_async_test.ipynb +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/k8s_orchestrator.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/langgraph_async_tool.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/examples/llm_tool.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/_bashkit_categories.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/_security_advanced.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/_security_core.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_ai_adapters.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_async_callbacks.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_basic.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_builtins.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_control_flow.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_error_handling.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_fastapi_integration.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_filesystem_interop.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_integration.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_jupyter_compat.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_langgraph_integration.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_network_config.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_python_security.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_registered_tools.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_scripts.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_security.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_shell_injection.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_sqlite.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_streaming_output.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_strings_and_quoting.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_tool_metadata.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/crates/bashkit-python/tests/test_vfs.py +0 -0
- {bashkit-0.4.1 → bashkit-0.6.0}/pyproject.toml +0 -0
|
@@ -345,11 +345,12 @@ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
|
|
|
345
345
|
|
|
346
346
|
[[package]]
|
|
347
347
|
name = "bashkit"
|
|
348
|
-
version = "0.
|
|
348
|
+
version = "0.6.0"
|
|
349
349
|
dependencies = [
|
|
350
350
|
"anyhow",
|
|
351
351
|
"async-trait",
|
|
352
352
|
"base64",
|
|
353
|
+
"bigdecimal",
|
|
353
354
|
"chrono",
|
|
354
355
|
"clap",
|
|
355
356
|
"criterion",
|
|
@@ -359,6 +360,7 @@ dependencies = [
|
|
|
359
360
|
"flate2",
|
|
360
361
|
"futures-core",
|
|
361
362
|
"futures-util",
|
|
363
|
+
"getrandom 0.4.2",
|
|
362
364
|
"hmac 0.13.0",
|
|
363
365
|
"insta",
|
|
364
366
|
"jaq-core",
|
|
@@ -366,6 +368,8 @@ dependencies = [
|
|
|
366
368
|
"jaq-std",
|
|
367
369
|
"md-5",
|
|
368
370
|
"monty",
|
|
371
|
+
"num-traits",
|
|
372
|
+
"os_display",
|
|
369
373
|
"pretty_assertions",
|
|
370
374
|
"proptest",
|
|
371
375
|
"rand 0.10.1",
|
|
@@ -386,6 +390,7 @@ dependencies = [
|
|
|
386
390
|
"tower",
|
|
387
391
|
"tracing",
|
|
388
392
|
"turso_core",
|
|
393
|
+
"unit-prefix",
|
|
389
394
|
"url",
|
|
390
395
|
"zapcode-core",
|
|
391
396
|
"zeroize",
|
|
@@ -393,7 +398,7 @@ dependencies = [
|
|
|
393
398
|
|
|
394
399
|
[[package]]
|
|
395
400
|
name = "bashkit-bench"
|
|
396
|
-
version = "0.
|
|
401
|
+
version = "0.6.0"
|
|
397
402
|
dependencies = [
|
|
398
403
|
"anyhow",
|
|
399
404
|
"bashkit",
|
|
@@ -407,7 +412,7 @@ dependencies = [
|
|
|
407
412
|
|
|
408
413
|
[[package]]
|
|
409
414
|
name = "bashkit-cli"
|
|
410
|
-
version = "0.
|
|
415
|
+
version = "0.6.0"
|
|
411
416
|
dependencies = [
|
|
412
417
|
"anyhow",
|
|
413
418
|
"bashkit",
|
|
@@ -421,9 +426,23 @@ dependencies = [
|
|
|
421
426
|
"tokio",
|
|
422
427
|
]
|
|
423
428
|
|
|
429
|
+
[[package]]
|
|
430
|
+
name = "bashkit-coreutils-port"
|
|
431
|
+
version = "0.6.0"
|
|
432
|
+
dependencies = [
|
|
433
|
+
"anyhow",
|
|
434
|
+
"prettyplease",
|
|
435
|
+
"proc-macro2",
|
|
436
|
+
"quote",
|
|
437
|
+
"serde",
|
|
438
|
+
"syn",
|
|
439
|
+
"tempfile",
|
|
440
|
+
"toml",
|
|
441
|
+
]
|
|
442
|
+
|
|
424
443
|
[[package]]
|
|
425
444
|
name = "bashkit-eval"
|
|
426
|
-
version = "0.
|
|
445
|
+
version = "0.6.0"
|
|
427
446
|
dependencies = [
|
|
428
447
|
"anyhow",
|
|
429
448
|
"async-trait",
|
|
@@ -440,7 +459,7 @@ dependencies = [
|
|
|
440
459
|
|
|
441
460
|
[[package]]
|
|
442
461
|
name = "bashkit-js"
|
|
443
|
-
version = "0.
|
|
462
|
+
version = "0.6.0"
|
|
444
463
|
dependencies = [
|
|
445
464
|
"bashkit",
|
|
446
465
|
"napi",
|
|
@@ -453,7 +472,7 @@ dependencies = [
|
|
|
453
472
|
|
|
454
473
|
[[package]]
|
|
455
474
|
name = "bashkit-python"
|
|
456
|
-
version = "0.
|
|
475
|
+
version = "0.6.0"
|
|
457
476
|
dependencies = [
|
|
458
477
|
"bashkit",
|
|
459
478
|
"num-bigint",
|
|
@@ -1802,11 +1821,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
1802
1821
|
checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
|
|
1803
1822
|
dependencies = [
|
|
1804
1823
|
"cfg-if",
|
|
1824
|
+
"js-sys",
|
|
1805
1825
|
"libc",
|
|
1806
1826
|
"r-efi 6.0.0",
|
|
1807
1827
|
"rand_core 0.10.1",
|
|
1808
1828
|
"wasip2",
|
|
1809
1829
|
"wasip3",
|
|
1830
|
+
"wasm-bindgen",
|
|
1810
1831
|
]
|
|
1811
1832
|
|
|
1812
1833
|
[[package]]
|
|
@@ -3034,6 +3055,15 @@ dependencies = [
|
|
|
3034
3055
|
"indexmap",
|
|
3035
3056
|
]
|
|
3036
3057
|
|
|
3058
|
+
[[package]]
|
|
3059
|
+
name = "os_display"
|
|
3060
|
+
version = "0.1.4"
|
|
3061
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3062
|
+
checksum = "ad5fd71b79026fb918650dde6d125000a233764f1c2f1659a1c71118e33ea08f"
|
|
3063
|
+
dependencies = [
|
|
3064
|
+
"unicode-width 0.2.2",
|
|
3065
|
+
]
|
|
3066
|
+
|
|
3037
3067
|
[[package]]
|
|
3038
3068
|
name = "owo-colors"
|
|
3039
3069
|
version = "3.5.0"
|
|
@@ -4770,6 +4800,15 @@ dependencies = [
|
|
|
4770
4800
|
"zmij",
|
|
4771
4801
|
]
|
|
4772
4802
|
|
|
4803
|
+
[[package]]
|
|
4804
|
+
name = "serde_spanned"
|
|
4805
|
+
version = "1.1.1"
|
|
4806
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4807
|
+
checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
|
|
4808
|
+
dependencies = [
|
|
4809
|
+
"serde_core",
|
|
4810
|
+
]
|
|
4811
|
+
|
|
4773
4812
|
[[package]]
|
|
4774
4813
|
name = "serdect"
|
|
4775
4814
|
version = "0.4.2"
|
|
@@ -5352,9 +5391,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
5352
5391
|
|
|
5353
5392
|
[[package]]
|
|
5354
5393
|
name = "tokio"
|
|
5355
|
-
version = "1.52.
|
|
5394
|
+
version = "1.52.3"
|
|
5356
5395
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5357
|
-
checksum = "
|
|
5396
|
+
checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
|
|
5358
5397
|
dependencies = [
|
|
5359
5398
|
"bytes",
|
|
5360
5399
|
"libc",
|
|
@@ -5422,6 +5461,45 @@ dependencies = [
|
|
|
5422
5461
|
"tokio",
|
|
5423
5462
|
]
|
|
5424
5463
|
|
|
5464
|
+
[[package]]
|
|
5465
|
+
name = "toml"
|
|
5466
|
+
version = "1.1.2+spec-1.1.0"
|
|
5467
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5468
|
+
checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
|
|
5469
|
+
dependencies = [
|
|
5470
|
+
"indexmap",
|
|
5471
|
+
"serde_core",
|
|
5472
|
+
"serde_spanned",
|
|
5473
|
+
"toml_datetime",
|
|
5474
|
+
"toml_parser",
|
|
5475
|
+
"toml_writer",
|
|
5476
|
+
"winnow",
|
|
5477
|
+
]
|
|
5478
|
+
|
|
5479
|
+
[[package]]
|
|
5480
|
+
name = "toml_datetime"
|
|
5481
|
+
version = "1.1.1+spec-1.1.0"
|
|
5482
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5483
|
+
checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
|
|
5484
|
+
dependencies = [
|
|
5485
|
+
"serde_core",
|
|
5486
|
+
]
|
|
5487
|
+
|
|
5488
|
+
[[package]]
|
|
5489
|
+
name = "toml_parser"
|
|
5490
|
+
version = "1.1.2+spec-1.1.0"
|
|
5491
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5492
|
+
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
|
|
5493
|
+
dependencies = [
|
|
5494
|
+
"winnow",
|
|
5495
|
+
]
|
|
5496
|
+
|
|
5497
|
+
[[package]]
|
|
5498
|
+
name = "toml_writer"
|
|
5499
|
+
version = "1.1.1+spec-1.1.0"
|
|
5500
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5501
|
+
checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
|
|
5502
|
+
|
|
5425
5503
|
[[package]]
|
|
5426
5504
|
name = "tower"
|
|
5427
5505
|
version = "0.5.3"
|
|
@@ -5744,6 +5822,12 @@ dependencies = [
|
|
|
5744
5822
|
"rand 0.8.6",
|
|
5745
5823
|
]
|
|
5746
5824
|
|
|
5825
|
+
[[package]]
|
|
5826
|
+
name = "unit-prefix"
|
|
5827
|
+
version = "0.5.2"
|
|
5828
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5829
|
+
checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
|
|
5830
|
+
|
|
5747
5831
|
[[package]]
|
|
5748
5832
|
name = "universal-hash"
|
|
5749
5833
|
version = "0.5.1"
|
|
@@ -6226,6 +6310,12 @@ version = "0.52.6"
|
|
|
6226
6310
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6227
6311
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
|
6228
6312
|
|
|
6313
|
+
[[package]]
|
|
6314
|
+
name = "winnow"
|
|
6315
|
+
version = "1.0.2"
|
|
6316
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
6317
|
+
checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0"
|
|
6318
|
+
|
|
6229
6319
|
[[package]]
|
|
6230
6320
|
name = "wit-bindgen"
|
|
6231
6321
|
version = "0.51.0"
|
|
@@ -7,7 +7,7 @@ resolver = "2"
|
|
|
7
7
|
members = ["crates/*"]
|
|
8
8
|
|
|
9
9
|
[workspace.package]
|
|
10
|
-
version = "0.
|
|
10
|
+
version = "0.6.0"
|
|
11
11
|
edition = "2024"
|
|
12
12
|
license = "MIT"
|
|
13
13
|
authors = ["Everruns"]
|
|
@@ -69,7 +69,19 @@ ed25519-dalek = { version = "2", features = ["rand_core"] }
|
|
|
69
69
|
rand = "0.10"
|
|
70
70
|
zeroize = "1"
|
|
71
71
|
|
|
72
|
+
# CSPRNG for placeholder token generation (security-grade randomness).
|
|
73
|
+
# Important decision: enable `wasm_js` so the public `wasm32-unknown-unknown`
|
|
74
|
+
# build gate stays green; bashkit targets JS-backed wasm for that triple.
|
|
75
|
+
# Used by the credential placeholder generator; getrandom is the lowest-level
|
|
76
|
+
# CSPRNG primitive and is already transitively in the dep tree via reqwest/rustls.
|
|
77
|
+
getrandom = { version = "0.4", features = ["wasm_js"] }
|
|
78
|
+
|
|
72
79
|
# CLI
|
|
80
|
+
# Intentionally NOT enabling clap's `env` feature: it makes `Arg::env(...)`
|
|
81
|
+
# read defaults from `std::env`, which would tunnel host process state into
|
|
82
|
+
# the bashkit sandbox (TM-INF-023). The coreutils-args-port codegen strips
|
|
83
|
+
# `.env(...)` chains from vendored Arg builders; dropping the feature here
|
|
84
|
+
# is defence-in-depth so any re-introduction fails to compile.
|
|
73
85
|
clap = { version = "4", features = ["derive"] }
|
|
74
86
|
|
|
75
87
|
# Testing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bashkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -41,6 +41,8 @@ Project-URL: Repository, https://github.com/everruns/bashkit
|
|
|
41
41
|
|
|
42
42
|
Sandboxed bash interpreter for Python. Native bindings to the `bashkit` Rust core for fast, in-process execution with a virtual filesystem.
|
|
43
43
|
|
|
44
|
+
Homepage: [bashkit.sh](https://bashkit.sh)
|
|
45
|
+
|
|
44
46
|
## Features
|
|
45
47
|
|
|
46
48
|
- Sandboxed execution in-process, without containers or subprocess orchestration
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
Sandboxed bash interpreter for Python. Native bindings to the `bashkit` Rust core for fast, in-process execution with a virtual filesystem.
|
|
6
6
|
|
|
7
|
+
Homepage: [bashkit.sh](https://bashkit.sh)
|
|
8
|
+
|
|
7
9
|
## Features
|
|
8
10
|
|
|
9
11
|
- Sandboxed execution in-process, without containers or subprocess orchestration
|
|
@@ -68,6 +68,9 @@ ed25519-dalek = { workspace = true, optional = true }
|
|
|
68
68
|
rand = { workspace = true, optional = true }
|
|
69
69
|
zeroize = { workspace = true, optional = true }
|
|
70
70
|
|
|
71
|
+
# CSPRNG for credential placeholder generation
|
|
72
|
+
getrandom = { workspace = true }
|
|
73
|
+
|
|
71
74
|
# Checksums (for md5sum, sha1sum, sha256sum builtins)
|
|
72
75
|
md-5 = { workspace = true }
|
|
73
76
|
sha1 = { workspace = true }
|
|
@@ -77,8 +80,18 @@ hmac = "0.13"
|
|
|
77
80
|
# Logging/tracing (optional)
|
|
78
81
|
tracing = { workspace = true, optional = true }
|
|
79
82
|
|
|
80
|
-
# CLI-style argument parsing for custom builtins
|
|
81
|
-
|
|
83
|
+
# CLI-style argument parsing for custom builtins and ported coreutils
|
|
84
|
+
# argument surfaces. Always on — see specs/coreutils-args-port.md.
|
|
85
|
+
clap = { workspace = true }
|
|
86
|
+
|
|
87
|
+
# Pinned to uutils' workspace versions. Used by the vendored
|
|
88
|
+
# uucore::format module (see crates/bashkit/src/builtins/generated/format)
|
|
89
|
+
# that backs `printf`. Kept platform-clean — no rustix / errno
|
|
90
|
+
# transitive deps — so wasm32 stays buildable.
|
|
91
|
+
bigdecimal = "0.4"
|
|
92
|
+
num-traits = "0.2"
|
|
93
|
+
unit-prefix = "0.5"
|
|
94
|
+
os_display = "0.1.3"
|
|
82
95
|
|
|
83
96
|
# Embedded Python interpreter (optional)
|
|
84
97
|
monty = { git = "https://github.com/pydantic/monty", rev = "49faa4c", optional = true }
|
|
@@ -91,9 +104,7 @@ zapcode-core = { version = "1.5", optional = true }
|
|
|
91
104
|
turso_core = { workspace = true, optional = true }
|
|
92
105
|
|
|
93
106
|
[features]
|
|
94
|
-
default = [
|
|
95
|
-
# Enable `ClapBuiltin` for custom builtins with `#[derive(clap::Parser)]`.
|
|
96
|
-
clap-builtins = ["dep:clap"]
|
|
107
|
+
default = []
|
|
97
108
|
# Enable jq builtin via embedded jaq interpreter
|
|
98
109
|
# Usage: cargo build --features jq
|
|
99
110
|
jq = ["dep:jaq-core", "dep:jaq-std", "dep:jaq-json"]
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
Awesomely fast virtual sandbox with bash and file system. Written in Rust.
|
|
10
10
|
|
|
11
|
+
Homepage: [bashkit.sh](https://bashkit.sh)
|
|
12
|
+
|
|
11
13
|
## Features
|
|
12
14
|
|
|
13
15
|
- **Secure by default** - No process spawning, no filesystem access, no network access unless explicitly enabled. [250+ threats](specs/threat-model.md) analyzed and mitigated
|
|
@@ -21,7 +23,6 @@ Awesomely fast virtual sandbox with bash and file system. Written in Rust.
|
|
|
21
23
|
- **LLM tool contract** - `BashTool` with discovery metadata, streaming output, and system prompts
|
|
22
24
|
- **Snapshotting** - Serialize shell state and VFS contents for checkpoint/resume workflows
|
|
23
25
|
- **Scripted tool orchestration** - Compose ToolDef+callback pairs into multi-tool bash scripts (`scripted_tool` feature)
|
|
24
|
-
- **MCP server** - Model Context Protocol endpoint via `bashkit mcp`
|
|
25
26
|
- **Async-first** - Built on tokio
|
|
26
27
|
- **Language bindings** - Python (PyO3) and JavaScript/TypeScript (NAPI-RS) for Node.js, Bun, and Deno
|
|
27
28
|
- **Experimental: Git support** - Virtual git operations on the virtual filesystem (`git` feature)
|
|
@@ -372,17 +373,15 @@ mountable.mount("/data", Arc::new(InMemoryFs::new()));
|
|
|
372
373
|
|
|
373
374
|
```bash
|
|
374
375
|
# Run a script
|
|
375
|
-
bashkit
|
|
376
|
+
bashkit script.sh
|
|
376
377
|
|
|
377
378
|
# Interactive REPL
|
|
378
|
-
bashkit
|
|
379
|
+
bashkit
|
|
379
380
|
|
|
380
|
-
# MCP server (Model Context Protocol)
|
|
381
|
-
bashkit mcp
|
|
382
381
|
|
|
383
382
|
# Mount real filesystem (read-only or read-write)
|
|
384
|
-
bashkit
|
|
385
|
-
bashkit
|
|
383
|
+
bashkit --mount-ro /data script.sh
|
|
384
|
+
bashkit --mount-rw /workspace script.sh
|
|
386
385
|
```
|
|
387
386
|
|
|
388
387
|
## Development
|
|
@@ -3,21 +3,8 @@
|
|
|
3
3
|
`ClapBuiltin` lets Rust applications define custom Bashkit commands with
|
|
4
4
|
`#[derive(clap::Parser)]` argument structs. Handlers receive a
|
|
5
5
|
`BashkitContext` that captures stdout, stderr, and exit code for the virtual
|
|
6
|
-
shell.
|
|
7
|
-
|
|
8
|
-
Disable it for a smaller library dependency surface:
|
|
9
|
-
|
|
10
|
-
```toml
|
|
11
|
-
[dependencies]
|
|
12
|
-
bashkit = { version = "0.3", default-features = false }
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Enable it explicitly when default features are off:
|
|
16
|
-
|
|
17
|
-
```toml
|
|
18
|
-
[dependencies]
|
|
19
|
-
bashkit = { version = "0.3", default-features = false, features = ["clap-builtins"] }
|
|
20
|
-
```
|
|
6
|
+
shell. `clap` is an unconditional dependency of `bashkit`, so this trait is
|
|
7
|
+
always available.
|
|
21
8
|
|
|
22
9
|
## Basic Usage
|
|
23
10
|
|
|
@@ -146,6 +133,6 @@ async fn main() -> bashkit::Result<()> {
|
|
|
146
133
|
|
|
147
134
|
## See Also
|
|
148
135
|
|
|
149
|
-
- [`crates/bashkit/examples/clap_builtin.rs`](../
|
|
150
|
-
- [`crates/bashkit/examples/clap_builtin_subcommands.rs`](../
|
|
151
|
-
- [`crates/bashkit/docs/custom_builtins.md`](
|
|
136
|
+
- [`crates/bashkit/examples/clap_builtin.rs`](../examples/clap_builtin.rs)
|
|
137
|
+
- [`crates/bashkit/examples/clap_builtin_subcommands.rs`](../examples/clap_builtin_subcommands.rs)
|
|
138
|
+
- [`crates/bashkit/docs/custom_builtins.md`](./custom_builtins.md)
|
|
@@ -7,7 +7,7 @@ virtual filesystem.
|
|
|
7
7
|
|
|
8
8
|
**See also:**
|
|
9
9
|
- [API Documentation](https://docs.rs/bashkit) - Full API reference
|
|
10
|
-
- [Clap Builtins](
|
|
10
|
+
- [Clap Builtins](./clap-builtins.md) - Derive parser structs for custom builtin args
|
|
11
11
|
- [Hooks](./hooks.md) - Interceptor hooks for the execution pipeline
|
|
12
12
|
- [Compatibility Reference](./compatibility.md) - Supported bash features
|
|
13
13
|
- [Threat Model](./threat-model.md) - Security considerations
|
|
@@ -156,10 +156,9 @@ Arguments are passed as a slice of strings, excluding the command name itself:
|
|
|
156
156
|
let first_arg = ctx.args.first().map(|s| s.as_str()).unwrap_or("default");
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
-
For custom builtins with richer flags, options, or subcommands,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
module for tested examples.
|
|
159
|
+
For custom builtins with richer flags, options, or subcommands, implement
|
|
160
|
+
`ClapBuiltin` with a `#[derive(clap::Parser)]` argument type. See the
|
|
161
|
+
`clap_builtins_guide` rustdoc module for tested examples.
|
|
163
162
|
|
|
164
163
|
### Environment Variables
|
|
165
164
|
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
//! cat builtin.
|
|
2
|
+
//!
|
|
3
|
+
//! Argument surface is generated from uutils/coreutils' `uu_app()` via the
|
|
4
|
+
//! `bashkit-coreutils-port` codegen tool — see `generated/cat_args.rs` and
|
|
5
|
+
//! `crates/bashkit-coreutils-port/`. Behaviour is implemented locally
|
|
6
|
+
//! against the bashkit VFS.
|
|
7
|
+
|
|
8
|
+
use async_trait::async_trait;
|
|
9
|
+
use std::ffi::OsString;
|
|
10
|
+
use std::path::Path;
|
|
11
|
+
|
|
12
|
+
use super::generated::cat_args::cat_command;
|
|
13
|
+
use super::{Builtin, Context, read_text_file};
|
|
14
|
+
use crate::error::Result;
|
|
15
|
+
use crate::interpreter::ExecResult;
|
|
16
|
+
|
|
17
|
+
pub struct Cat;
|
|
18
|
+
|
|
19
|
+
#[async_trait]
|
|
20
|
+
impl Builtin for Cat {
|
|
21
|
+
async fn execute(&self, ctx: Context<'_>) -> Result<ExecResult> {
|
|
22
|
+
// clap expects argv[0] = program name; bashkit's ctx.args excludes it.
|
|
23
|
+
let argv: Vec<OsString> = std::iter::once(OsString::from("cat"))
|
|
24
|
+
.chain(ctx.args.iter().map(OsString::from))
|
|
25
|
+
.collect();
|
|
26
|
+
|
|
27
|
+
// GNU coreutils' help layout opens with the usage line; clap's
|
|
28
|
+
// default template leads with the `about`. uutils handles this via
|
|
29
|
+
// uucore's `localized_help_template`, which we drop during codegen
|
|
30
|
+
// because it pulls in Fluent. Re-apply a GNU-equivalent template.
|
|
31
|
+
let cmd = cat_command().help_template("Usage: {usage}\n{about}\n\n{all-args}\n");
|
|
32
|
+
let matches = match cmd.try_get_matches_from(argv) {
|
|
33
|
+
Ok(m) => m,
|
|
34
|
+
Err(e) => {
|
|
35
|
+
let kind = e.kind();
|
|
36
|
+
let rendered = e.render().to_string();
|
|
37
|
+
if matches!(
|
|
38
|
+
kind,
|
|
39
|
+
clap::error::ErrorKind::DisplayHelp | clap::error::ErrorKind::DisplayVersion
|
|
40
|
+
) {
|
|
41
|
+
return Ok(ExecResult::ok(rendered));
|
|
42
|
+
}
|
|
43
|
+
return Ok(ExecResult::err(rendered, 2));
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Composite flags: -A = -vET, -e = -vE, -t = -vT.
|
|
48
|
+
let g = |k: &str| matches.get_flag(k);
|
|
49
|
+
let show_all = g("show-all");
|
|
50
|
+
let number_nonblank = g("number-nonblank");
|
|
51
|
+
let nonprint_ends = g("e");
|
|
52
|
+
let nonprint_tabs = g("t");
|
|
53
|
+
let show_ends = g("show-ends") || show_all || nonprint_ends;
|
|
54
|
+
let show_tabs = g("show-tabs") || show_all || nonprint_tabs;
|
|
55
|
+
let show_nonprinting = g("show-nonprinting") || show_all || nonprint_ends || nonprint_tabs;
|
|
56
|
+
let number_all = g("number") && !number_nonblank;
|
|
57
|
+
let squeeze = g("squeeze-blank");
|
|
58
|
+
|
|
59
|
+
// GNU `cat` reads stdin when FILE is "-" or absent. clap defaults
|
|
60
|
+
// FILE to "-" so absence and "-" are unified.
|
|
61
|
+
let files: Vec<String> = matches
|
|
62
|
+
.get_many::<OsString>("file")
|
|
63
|
+
.map(|vs| vs.map(|v| v.to_string_lossy().into_owned()).collect())
|
|
64
|
+
.unwrap_or_default();
|
|
65
|
+
|
|
66
|
+
let mut raw = String::new();
|
|
67
|
+
for file in &files {
|
|
68
|
+
if file == "-" {
|
|
69
|
+
if let Some(stdin) = ctx.stdin {
|
|
70
|
+
raw.push_str(stdin);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
let path = if Path::new(file).is_absolute() {
|
|
74
|
+
file.clone()
|
|
75
|
+
} else {
|
|
76
|
+
ctx.cwd.join(file).to_string_lossy().into_owned()
|
|
77
|
+
};
|
|
78
|
+
match read_text_file(&*ctx.fs, Path::new(&path), "cat").await {
|
|
79
|
+
Ok(t) => raw.push_str(&t),
|
|
80
|
+
Err(e) => return Ok(e),
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let output = render(
|
|
86
|
+
&raw,
|
|
87
|
+
show_ends,
|
|
88
|
+
show_tabs,
|
|
89
|
+
show_nonprinting,
|
|
90
|
+
number_all,
|
|
91
|
+
number_nonblank,
|
|
92
|
+
squeeze,
|
|
93
|
+
);
|
|
94
|
+
Ok(ExecResult::ok(output))
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/// Apply cat's display transforms in a single pass.
|
|
99
|
+
///
|
|
100
|
+
/// One pass because numbering interacts with squeezing — squeezed blank
|
|
101
|
+
/// lines must not be numbered. Two passes mis-number `cat -ns`.
|
|
102
|
+
fn render(
|
|
103
|
+
raw: &str,
|
|
104
|
+
show_ends: bool,
|
|
105
|
+
show_tabs: bool,
|
|
106
|
+
show_nonprinting: bool,
|
|
107
|
+
number_all: bool,
|
|
108
|
+
number_nonblank: bool,
|
|
109
|
+
squeeze: bool,
|
|
110
|
+
) -> String {
|
|
111
|
+
use std::fmt::Write;
|
|
112
|
+
|
|
113
|
+
let mut out = String::with_capacity(raw.len());
|
|
114
|
+
let mut counter: u64 = 0;
|
|
115
|
+
let mut prev_blank = false;
|
|
116
|
+
|
|
117
|
+
let mut iter = raw.split_inclusive('\n').peekable();
|
|
118
|
+
if iter.peek().is_none() {
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
for chunk in iter {
|
|
123
|
+
let (body, sep): (&str, &str) = match chunk.strip_suffix('\n') {
|
|
124
|
+
Some(b) => (b, "\n"),
|
|
125
|
+
None => (chunk, ""),
|
|
126
|
+
};
|
|
127
|
+
let is_blank = body.is_empty();
|
|
128
|
+
|
|
129
|
+
if squeeze && is_blank && prev_blank {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
prev_blank = is_blank;
|
|
133
|
+
|
|
134
|
+
if number_all || (number_nonblank && !is_blank) {
|
|
135
|
+
counter += 1;
|
|
136
|
+
let _ = write!(out, "{counter:>6}\t");
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if show_nonprinting || show_tabs {
|
|
140
|
+
for b in body.bytes() {
|
|
141
|
+
emit_byte(&mut out, b, show_tabs, show_nonprinting);
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
out.push_str(body);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if show_ends && !sep.is_empty() {
|
|
148
|
+
out.push('$');
|
|
149
|
+
}
|
|
150
|
+
out.push_str(sep);
|
|
151
|
+
}
|
|
152
|
+
out
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/// GNU cat -v style byte rendering.
|
|
156
|
+
///
|
|
157
|
+
/// - tab (0x09): literal '\t' unless `show_tabs` (then `^I`).
|
|
158
|
+
/// - bytes < 0x20 (other than tab/newline): `^X` (X = byte + 64) when
|
|
159
|
+
/// show_nonprinting; passed through otherwise.
|
|
160
|
+
/// - 0x7F (DEL): `^?`.
|
|
161
|
+
/// - 0x80..=0xFF (high bit set): `M-` prefix + low-7-bit rendered same way.
|
|
162
|
+
fn emit_byte(out: &mut String, b: u8, show_tabs: bool, show_nonprinting: bool) {
|
|
163
|
+
match b {
|
|
164
|
+
b'\t' if show_tabs => {
|
|
165
|
+
out.push('^');
|
|
166
|
+
out.push('I');
|
|
167
|
+
}
|
|
168
|
+
b'\t' => out.push('\t'),
|
|
169
|
+
b'\n' => out.push('\n'),
|
|
170
|
+
0..=31 if show_nonprinting => {
|
|
171
|
+
out.push('^');
|
|
172
|
+
out.push((b + 64) as char);
|
|
173
|
+
}
|
|
174
|
+
0x7f if show_nonprinting => {
|
|
175
|
+
out.push('^');
|
|
176
|
+
out.push('?');
|
|
177
|
+
}
|
|
178
|
+
128..=255 if show_nonprinting => {
|
|
179
|
+
out.push_str("M-");
|
|
180
|
+
let low = b & 0x7f;
|
|
181
|
+
if (0..32).contains(&low) {
|
|
182
|
+
out.push('^');
|
|
183
|
+
out.push((low + 64) as char);
|
|
184
|
+
} else if low == 0x7f {
|
|
185
|
+
out.push('^');
|
|
186
|
+
out.push('?');
|
|
187
|
+
} else {
|
|
188
|
+
out.push(low as char);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
_ => out.push(b as char),
|
|
192
|
+
}
|
|
193
|
+
}
|