just-bash 0.1.2__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.
- just_bash-0.1.2/.gitignore +99 -0
- just_bash-0.1.2/CLAUDE.md +146 -0
- just_bash-0.1.2/PKG-INFO +232 -0
- just_bash-0.1.2/README.md +204 -0
- just_bash-0.1.2/examples/demo.py +306 -0
- just_bash-0.1.2/examples/text_processing_demo.py +483 -0
- just_bash-0.1.2/just-bash/.github/workflows/comparison-tests.yml +37 -0
- just_bash-0.1.2/just-bash/.github/workflows/lint.yml +30 -0
- just_bash-0.1.2/just-bash/.github/workflows/typecheck.yml +38 -0
- just_bash-0.1.2/just-bash/.github/workflows/unit-tests.yml +33 -0
- just_bash-0.1.2/just-bash/.gitignore +16 -0
- just_bash-0.1.2/just-bash/.npmignore +24 -0
- just_bash-0.1.2/just-bash/AGENTS.md +40 -0
- just_bash-0.1.2/just-bash/AGENTS.npm.md +300 -0
- just_bash-0.1.2/just-bash/CLAUDE.md +188 -0
- just_bash-0.1.2/just-bash/LICENSE +201 -0
- just_bash-0.1.2/just-bash/README.md +440 -0
- just_bash-0.1.2/just-bash/biome.json +41 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/.gitignore +3 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/README.md +56 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/agent.ts +105 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/main.ts +42 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/package.json +16 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/pnpm-lock.yaml +600 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/shell.ts +74 -0
- just_bash-0.1.2/just-bash/examples/bash-agent/tsconfig.json +13 -0
- just_bash-0.1.2/just-bash/examples/custom-command/README.md +80 -0
- just_bash-0.1.2/just-bash/examples/custom-command/commands.ts +290 -0
- just_bash-0.1.2/just-bash/examples/custom-command/main.ts +105 -0
- just_bash-0.1.2/just-bash/examples/custom-command/package.json +16 -0
- just_bash-0.1.2/just-bash/examples/custom-command/pnpm-lock.yaml +753 -0
- just_bash-0.1.2/just-bash/examples/custom-command/tsconfig.json +14 -0
- just_bash-0.1.2/just-bash/knip.json +13 -0
- just_bash-0.1.2/just-bash/package.json +107 -0
- just_bash-0.1.2/just-bash/pnpm-lock.yaml +1864 -0
- just_bash-0.1.2/just-bash/src/Bash.commands.test.ts +85 -0
- just_bash-0.1.2/just-bash/src/Bash.exec-options.test.ts +806 -0
- just_bash-0.1.2/just-bash/src/Bash.general.test.ts +632 -0
- just_bash-0.1.2/just-bash/src/Bash.ts +451 -0
- just_bash-0.1.2/just-bash/src/agent-examples/bug-investigation.test.ts +268 -0
- just_bash-0.1.2/just-bash/src/agent-examples/code-review.test.ts +129 -0
- just_bash-0.1.2/just-bash/src/agent-examples/codebase-exploration.test.ts +330 -0
- just_bash-0.1.2/just-bash/src/agent-examples/config-analysis.test.ts +249 -0
- just_bash-0.1.2/just-bash/src/agent-examples/debugging-workflow.test.ts +491 -0
- just_bash-0.1.2/just-bash/src/agent-examples/dependency-analysis.test.ts +358 -0
- just_bash-0.1.2/just-bash/src/agent-examples/feature-implementation.test.ts +617 -0
- just_bash-0.1.2/just-bash/src/agent-examples/log-analysis.test.ts +282 -0
- just_bash-0.1.2/just-bash/src/agent-examples/multi-file-migration.test.ts +335 -0
- just_bash-0.1.2/just-bash/src/agent-examples/refactoring-workflow.test.ts +416 -0
- just_bash-0.1.2/just-bash/src/agent-examples/security-audit.test.ts +434 -0
- just_bash-0.1.2/just-bash/src/agent-examples/text-processing-workflows.test.ts +945 -0
- just_bash-0.1.2/just-bash/src/ast/types.ts +963 -0
- just_bash-0.1.2/just-bash/src/browser.bundle.test.ts +204 -0
- just_bash-0.1.2/just-bash/src/browser.ts +54 -0
- just_bash-0.1.2/just-bash/src/cli/exec.ts +127 -0
- just_bash-0.1.2/just-bash/src/cli/just-bash.bundle.test.ts +106 -0
- just_bash-0.1.2/just-bash/src/cli/just-bash.test.ts +348 -0
- just_bash-0.1.2/just-bash/src/cli/just-bash.ts +329 -0
- just_bash-0.1.2/just-bash/src/cli/shell.test.ts +205 -0
- just_bash-0.1.2/just-bash/src/cli/shell.ts +245 -0
- just_bash-0.1.2/just-bash/src/commands/alias/alias.test.ts +91 -0
- just_bash-0.1.2/just-bash/src/commands/alias/alias.ts +121 -0
- just_bash-0.1.2/just-bash/src/commands/awk/ast.ts +292 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.arrays.test.ts +315 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.binary.test.ts +25 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.edge-cases.test.ts +426 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.expressions.test.ts +512 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.fields.test.ts +411 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.functions.test.ts +556 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.getline.test.ts +214 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.limits.test.ts +129 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.math.test.ts +107 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.modulo.test.ts +120 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.nextfile.test.ts +107 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.operators.test.ts +474 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.output.test.ts +137 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.parsing.test.ts +436 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.patterns.test.ts +252 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.range.test.ts +116 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.strings.test.ts +473 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.ternary.test.ts +177 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk.test.ts +623 -0
- just_bash-0.1.2/just-bash/src/commands/awk/awk2.ts +245 -0
- just_bash-0.1.2/just-bash/src/commands/awk/builtins.ts +809 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/context.ts +137 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/expressions.ts +630 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/fields.ts +85 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/helpers.ts +59 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/index.ts +13 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/interpreter.ts +182 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/statements.ts +369 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/types.ts +15 -0
- just_bash-0.1.2/just-bash/src/commands/awk/interpreter/variables.ts +161 -0
- just_bash-0.1.2/just-bash/src/commands/awk/lexer.ts +823 -0
- just_bash-0.1.2/just-bash/src/commands/awk/parser2.ts +1161 -0
- just_bash-0.1.2/just-bash/src/commands/base64/base64.binary.test.ts +134 -0
- just_bash-0.1.2/just-bash/src/commands/base64/base64.test.ts +194 -0
- just_bash-0.1.2/just-bash/src/commands/base64/base64.ts +123 -0
- just_bash-0.1.2/just-bash/src/commands/basename/basename.test.ts +58 -0
- just_bash-0.1.2/just-bash/src/commands/basename/basename.ts +72 -0
- just_bash-0.1.2/just-bash/src/commands/bash/bash.test.ts +203 -0
- just_bash-0.1.2/just-bash/src/commands/bash/bash.ts +159 -0
- just_bash-0.1.2/just-bash/src/commands/browser-excluded.ts +24 -0
- just_bash-0.1.2/just-bash/src/commands/cat/cat.binary.test.ts +53 -0
- just_bash-0.1.2/just-bash/src/commands/cat/cat.test.ts +171 -0
- just_bash-0.1.2/just-bash/src/commands/cat/cat.ts +77 -0
- just_bash-0.1.2/just-bash/src/commands/chmod/chmod.test.ts +141 -0
- just_bash-0.1.2/just-bash/src/commands/chmod/chmod.ts +193 -0
- just_bash-0.1.2/just-bash/src/commands/clear/clear.test.ts +19 -0
- just_bash-0.1.2/just-bash/src/commands/clear/clear.ts +24 -0
- just_bash-0.1.2/just-bash/src/commands/column/column.test.ts +194 -0
- just_bash-0.1.2/just-bash/src/commands/column/column.ts +242 -0
- just_bash-0.1.2/just-bash/src/commands/comm/comm.test.ts +140 -0
- just_bash-0.1.2/just-bash/src/commands/comm/comm.ts +161 -0
- just_bash-0.1.2/just-bash/src/commands/cp/cp.binary.test.ts +23 -0
- just_bash-0.1.2/just-bash/src/commands/cp/cp.test.ts +149 -0
- just_bash-0.1.2/just-bash/src/commands/cp/cp.ts +132 -0
- just_bash-0.1.2/just-bash/src/commands/curl/curl.ts +287 -0
- just_bash-0.1.2/just-bash/src/commands/curl/form.ts +96 -0
- just_bash-0.1.2/just-bash/src/commands/curl/help.ts +46 -0
- just_bash-0.1.2/just-bash/src/commands/curl/parse.ts +254 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/allowlist.test.ts +114 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/auth.test.ts +113 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/availability.test.ts +81 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/binary.test.ts +174 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/cookies.test.ts +123 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/form.test.ts +183 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/methods.test.ts +250 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/options.test.ts +277 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/timeout.test.ts +130 -0
- just_bash-0.1.2/just-bash/src/commands/curl/tests/upload.test.ts +119 -0
- just_bash-0.1.2/just-bash/src/commands/curl/types.ts +33 -0
- just_bash-0.1.2/just-bash/src/commands/curl/utils.ts +50 -0
- just_bash-0.1.2/just-bash/src/commands/cut/cut.binary.test.ts +23 -0
- just_bash-0.1.2/just-bash/src/commands/cut/cut.test.ts +110 -0
- just_bash-0.1.2/just-bash/src/commands/cut/cut.ts +163 -0
- just_bash-0.1.2/just-bash/src/commands/date/date.test.ts +266 -0
- just_bash-0.1.2/just-bash/src/commands/date/date.ts +215 -0
- just_bash-0.1.2/just-bash/src/commands/diff/diff.binary.test.ts +75 -0
- just_bash-0.1.2/just-bash/src/commands/diff/diff.test.ts +294 -0
- just_bash-0.1.2/just-bash/src/commands/diff/diff.ts +114 -0
- just_bash-0.1.2/just-bash/src/commands/dirname/dirname.test.ts +44 -0
- just_bash-0.1.2/just-bash/src/commands/dirname/dirname.ts +49 -0
- just_bash-0.1.2/just-bash/src/commands/du/du.test.ts +116 -0
- just_bash-0.1.2/just-bash/src/commands/du/du.ts +276 -0
- just_bash-0.1.2/just-bash/src/commands/echo/echo.binary.test.ts +80 -0
- just_bash-0.1.2/just-bash/src/commands/echo/echo.test.ts +101 -0
- just_bash-0.1.2/just-bash/src/commands/echo/echo.ts +218 -0
- just_bash-0.1.2/just-bash/src/commands/expand/expand.test.ts +188 -0
- just_bash-0.1.2/just-bash/src/commands/expand/expand.ts +241 -0
- just_bash-0.1.2/just-bash/src/commands/expand/unexpand.test.ts +177 -0
- just_bash-0.1.2/just-bash/src/commands/expand/unexpand.ts +283 -0
- just_bash-0.1.2/just-bash/src/commands/expr/expr.ts +247 -0
- just_bash-0.1.2/just-bash/src/commands/file/file.test.ts +269 -0
- just_bash-0.1.2/just-bash/src/commands/file/file.ts +462 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.actions.test.ts +204 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.basic.test.ts +311 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.depth.test.ts +154 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.exec.test.ts +159 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.operators.test.ts +340 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.patterns.test.ts +293 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.perf.test.ts +1541 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.perm.test.ts +83 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.predicates.test.ts +216 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.printf.test.ts +519 -0
- just_bash-0.1.2/just-bash/src/commands/find/find.ts +1154 -0
- just_bash-0.1.2/just-bash/src/commands/find/matcher.ts +794 -0
- just_bash-0.1.2/just-bash/src/commands/find/parser.ts +318 -0
- just_bash-0.1.2/just-bash/src/commands/find/types.ts +67 -0
- just_bash-0.1.2/just-bash/src/commands/fold/fold.test.ts +181 -0
- just_bash-0.1.2/just-bash/src/commands/fold/fold.ts +269 -0
- just_bash-0.1.2/just-bash/src/commands/grep/grep.advanced.test.ts +505 -0
- just_bash-0.1.2/just-bash/src/commands/grep/grep.basic.test.ts +496 -0
- just_bash-0.1.2/just-bash/src/commands/grep/grep.binary.test.ts +50 -0
- just_bash-0.1.2/just-bash/src/commands/grep/grep.exclude.test.ts +173 -0
- just_bash-0.1.2/just-bash/src/commands/grep/grep.ts +670 -0
- just_bash-0.1.2/just-bash/src/commands/gzip/gzip.binary.test.ts +177 -0
- just_bash-0.1.2/just-bash/src/commands/gzip/gzip.test.ts +402 -0
- just_bash-0.1.2/just-bash/src/commands/gzip/gzip.ts +792 -0
- just_bash-0.1.2/just-bash/src/commands/head/head-tail-shared.ts +240 -0
- just_bash-0.1.2/just-bash/src/commands/head/head.binary.test.ts +38 -0
- just_bash-0.1.2/just-bash/src/commands/head/head.test.ts +106 -0
- just_bash-0.1.2/just-bash/src/commands/head/head.ts +41 -0
- just_bash-0.1.2/just-bash/src/commands/help/help.test.ts +74 -0
- just_bash-0.1.2/just-bash/src/commands/help/help.ts +122 -0
- just_bash-0.1.2/just-bash/src/commands/help.ts +65 -0
- just_bash-0.1.2/just-bash/src/commands/history/history.test.ts +47 -0
- just_bash-0.1.2/just-bash/src/commands/history/history.ts +56 -0
- just_bash-0.1.2/just-bash/src/commands/hostname/hostname.test.ts +18 -0
- just_bash-0.1.2/just-bash/src/commands/hostname/hostname.ts +22 -0
- just_bash-0.1.2/just-bash/src/commands/html-to-markdown/html-to-markdown.test.ts +291 -0
- just_bash-0.1.2/just-bash/src/commands/html-to-markdown/html-to-markdown.ts +144 -0
- just_bash-0.1.2/just-bash/src/commands/join/join.test.ts +312 -0
- just_bash-0.1.2/just-bash/src/commands/join/join.ts +372 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.basic.test.ts +176 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.construction.test.ts +54 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.filters.test.ts +152 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.functions.test.ts +285 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.limits.test.ts +98 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.operators.test.ts +178 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.strings.test.ts +108 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.test.ts +392 -0
- just_bash-0.1.2/just-bash/src/commands/jq/jq.ts +348 -0
- just_bash-0.1.2/just-bash/src/commands/ln/ln.test.ts +161 -0
- just_bash-0.1.2/just-bash/src/commands/ln/ln.ts +131 -0
- just_bash-0.1.2/just-bash/src/commands/ls/ls.human.test.ts +89 -0
- just_bash-0.1.2/just-bash/src/commands/ls/ls.test.ts +252 -0
- just_bash-0.1.2/just-bash/src/commands/ls/ls.ts +513 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/checksum.binary.test.ts +205 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/checksum.ts +235 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/md5sum.test.ts +187 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/md5sum.ts +8 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/sha1sum.ts +8 -0
- just_bash-0.1.2/just-bash/src/commands/md5sum/sha256sum.ts +8 -0
- just_bash-0.1.2/just-bash/src/commands/mkdir/mkdir.test.ts +103 -0
- just_bash-0.1.2/just-bash/src/commands/mkdir/mkdir.ts +58 -0
- just_bash-0.1.2/just-bash/src/commands/mv/mv.test.ts +242 -0
- just_bash-0.1.2/just-bash/src/commands/mv/mv.ts +125 -0
- just_bash-0.1.2/just-bash/src/commands/nl/nl.test.ts +214 -0
- just_bash-0.1.2/just-bash/src/commands/nl/nl.ts +309 -0
- just_bash-0.1.2/just-bash/src/commands/od/od.binary.test.ts +83 -0
- just_bash-0.1.2/just-bash/src/commands/od/od.test.ts +51 -0
- just_bash-0.1.2/just-bash/src/commands/od/od.ts +93 -0
- just_bash-0.1.2/just-bash/src/commands/paste/paste.test.ts +213 -0
- just_bash-0.1.2/just-bash/src/commands/paste/paste.ts +145 -0
- just_bash-0.1.2/just-bash/src/commands/printf/escapes.test.ts +192 -0
- just_bash-0.1.2/just-bash/src/commands/printf/escapes.ts +215 -0
- just_bash-0.1.2/just-bash/src/commands/printf/printf.binary.test.ts +94 -0
- just_bash-0.1.2/just-bash/src/commands/printf/printf.test.ts +181 -0
- just_bash-0.1.2/just-bash/src/commands/printf/printf.ts +890 -0
- just_bash-0.1.2/just-bash/src/commands/pwd/pwd.test.ts +60 -0
- just_bash-0.1.2/just-bash/src/commands/pwd/pwd.ts +13 -0
- just_bash-0.1.2/just-bash/src/commands/query-engine/evaluator.ts +2114 -0
- just_bash-0.1.2/just-bash/src/commands/query-engine/index.ts +9 -0
- just_bash-0.1.2/just-bash/src/commands/query-engine/parser.ts +1104 -0
- just_bash-0.1.2/just-bash/src/commands/readlink/readlink.test.ts +118 -0
- just_bash-0.1.2/just-bash/src/commands/readlink/readlink.ts +102 -0
- just_bash-0.1.2/just-bash/src/commands/registry.test.ts +77 -0
- just_bash-0.1.2/just-bash/src/commands/registry.ts +546 -0
- just_bash-0.1.2/just-bash/src/commands/rev/rev.test.ts +144 -0
- just_bash-0.1.2/just-bash/src/commands/rev/rev.ts +101 -0
- just_bash-0.1.2/just-bash/src/commands/rg/file-types.ts +261 -0
- just_bash-0.1.2/just-bash/src/commands/rg/gitignore.test.ts +128 -0
- just_bash-0.1.2/just-bash/src/commands/rg/gitignore.ts +443 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/README.md +43 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/binary.test.ts +305 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/feature.test.ts +1047 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/json.test.ts +227 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/misc.test.ts +1199 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/multiline.test.ts +105 -0
- just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/regression.test.ts +1553 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg-options.ts +126 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg-parser.ts +640 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg-search.ts +997 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.basic.test.ts +264 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.edge-cases.test.ts +441 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.filtering.test.ts +227 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.flags.test.ts +166 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.max-count.test.ts +408 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.no-filename.test.ts +405 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.output.test.ts +253 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.patterns.test.ts +288 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.ripgrep-compat.test.ts +934 -0
- just_bash-0.1.2/just-bash/src/commands/rg/rg.ts +114 -0
- just_bash-0.1.2/just-bash/src/commands/rm/rm.test.ts +152 -0
- just_bash-0.1.2/just-bash/src/commands/rm/rm.ts +73 -0
- just_bash-0.1.2/just-bash/src/commands/search-engine/index.ts +20 -0
- just_bash-0.1.2/just-bash/src/commands/search-engine/matcher.ts +620 -0
- just_bash-0.1.2/just-bash/src/commands/search-engine/regex.ts +135 -0
- just_bash-0.1.2/just-bash/src/commands/sed/executor.ts +808 -0
- just_bash-0.1.2/just-bash/src/commands/sed/lexer.ts +711 -0
- just_bash-0.1.2/just-bash/src/commands/sed/parser.ts +429 -0
- just_bash-0.1.2/just-bash/src/commands/sed/sed.advanced.test.ts +166 -0
- just_bash-0.1.2/just-bash/src/commands/sed/sed.binary.test.ts +23 -0
- just_bash-0.1.2/just-bash/src/commands/sed/sed.limits.test.ts +175 -0
- just_bash-0.1.2/just-bash/src/commands/sed/sed.test.ts +933 -0
- just_bash-0.1.2/just-bash/src/commands/sed/sed.ts +467 -0
- just_bash-0.1.2/just-bash/src/commands/sed/types.ts +308 -0
- just_bash-0.1.2/just-bash/src/commands/seq/seq.test.ts +170 -0
- just_bash-0.1.2/just-bash/src/commands/seq/seq.ts +168 -0
- just_bash-0.1.2/just-bash/src/commands/sleep/sleep.test.ts +179 -0
- just_bash-0.1.2/just-bash/src/commands/sleep/sleep.ts +81 -0
- just_bash-0.1.2/just-bash/src/commands/sort/comparator.ts +348 -0
- just_bash-0.1.2/just-bash/src/commands/sort/parser.ts +101 -0
- just_bash-0.1.2/just-bash/src/commands/sort/sort.advanced.test.ts +247 -0
- just_bash-0.1.2/just-bash/src/commands/sort/sort.binary.test.ts +23 -0
- just_bash-0.1.2/just-bash/src/commands/sort/sort.test.ts +259 -0
- just_bash-0.1.2/just-bash/src/commands/sort/sort.ts +202 -0
- just_bash-0.1.2/just-bash/src/commands/sort/types.ts +38 -0
- just_bash-0.1.2/just-bash/src/commands/split/split.test.ts +367 -0
- just_bash-0.1.2/just-bash/src/commands/split/split.ts +401 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/datatypes.db +0 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/products.db +0 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/users.db +0 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/formatters.ts +428 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/samples.sh +245 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.errors.test.ts +144 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.fixtures.test.ts +215 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.formatters.test.ts +316 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.options.test.ts +124 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.output-modes.test.ts +151 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.parsing.test.ts +198 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.test.ts +137 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.ts +533 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.write-ops.test.ts +150 -0
- just_bash-0.1.2/just-bash/src/commands/sqlite3/worker.ts +161 -0
- just_bash-0.1.2/just-bash/src/commands/stat/stat.test.ts +115 -0
- just_bash-0.1.2/just-bash/src/commands/stat/stat.ts +103 -0
- just_bash-0.1.2/just-bash/src/commands/strings/strings.binary.test.ts +311 -0
- just_bash-0.1.2/just-bash/src/commands/strings/strings.test.ts +259 -0
- just_bash-0.1.2/just-bash/src/commands/strings/strings.ts +261 -0
- just_bash-0.1.2/just-bash/src/commands/tac/tac.test.ts +40 -0
- just_bash-0.1.2/just-bash/src/commands/tac/tac.ts +59 -0
- just_bash-0.1.2/just-bash/src/commands/tail/tail.binary.test.ts +38 -0
- just_bash-0.1.2/just-bash/src/commands/tail/tail.test.ts +148 -0
- just_bash-0.1.2/just-bash/src/commands/tail/tail.ts +42 -0
- just_bash-0.1.2/just-bash/src/commands/tar/archive.ts +475 -0
- just_bash-0.1.2/just-bash/src/commands/tar/tar.binary.test.ts +186 -0
- just_bash-0.1.2/just-bash/src/commands/tar/tar.bundle.test.ts +222 -0
- just_bash-0.1.2/just-bash/src/commands/tar/tar.test.ts +1355 -0
- just_bash-0.1.2/just-bash/src/commands/tar/tar.ts +1436 -0
- just_bash-0.1.2/just-bash/src/commands/tee/tee.binary.test.ts +18 -0
- just_bash-0.1.2/just-bash/src/commands/tee/tee.test.ts +56 -0
- just_bash-0.1.2/just-bash/src/commands/tee/tee.ts +58 -0
- just_bash-0.1.2/just-bash/src/commands/test/test.test.ts +265 -0
- just_bash-0.1.2/just-bash/src/commands/timeout/timeout.test.ts +153 -0
- just_bash-0.1.2/just-bash/src/commands/timeout/timeout.ts +173 -0
- just_bash-0.1.2/just-bash/src/commands/touch/touch.test.ts +69 -0
- just_bash-0.1.2/just-bash/src/commands/touch/touch.ts +50 -0
- just_bash-0.1.2/just-bash/src/commands/tr/tr.binary.test.ts +16 -0
- just_bash-0.1.2/just-bash/src/commands/tr/tr.complement.test.ts +77 -0
- just_bash-0.1.2/just-bash/src/commands/tr/tr.test.ts +106 -0
- just_bash-0.1.2/just-bash/src/commands/tr/tr.ts +220 -0
- just_bash-0.1.2/just-bash/src/commands/tree/tree.test.ts +143 -0
- just_bash-0.1.2/just-bash/src/commands/tree/tree.ts +314 -0
- just_bash-0.1.2/just-bash/src/commands/true/true.test.ts +46 -0
- just_bash-0.1.2/just-bash/src/commands/true/true.ts +17 -0
- just_bash-0.1.2/just-bash/src/commands/uniq/uniq.binary.test.ts +23 -0
- just_bash-0.1.2/just-bash/src/commands/uniq/uniq.test.ts +105 -0
- just_bash-0.1.2/just-bash/src/commands/uniq/uniq.ts +101 -0
- just_bash-0.1.2/just-bash/src/commands/wc/wc.binary.test.ts +28 -0
- just_bash-0.1.2/just-bash/src/commands/wc/wc.test.ts +131 -0
- just_bash-0.1.2/just-bash/src/commands/wc/wc.ts +152 -0
- just_bash-0.1.2/just-bash/src/commands/which/which.test.ts +85 -0
- just_bash-0.1.2/just-bash/src/commands/which/which.ts +74 -0
- just_bash-0.1.2/just-bash/src/commands/xan/aggregation.ts +247 -0
- just_bash-0.1.2/just-bash/src/commands/xan/csv.ts +66 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/employees.csv +21 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/metrics.csv +25 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/numbers.csv +6 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/products.csv +6 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/sales.csv +9 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/server_logs.csv +21 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/special_chars.csv +12 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/transactions.csv +21 -0
- just_bash-0.1.2/just-bash/src/commands/xan/fixtures/users.csv +5 -0
- just_bash-0.1.2/just-bash/src/commands/xan/moonblade-parser.ts +1241 -0
- just_bash-0.1.2/just-bash/src/commands/xan/moonblade-to-jq.ts +425 -0
- just_bash-0.1.2/just-bash/src/commands/xan/subcommands.ts +55 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-agg.ts +302 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-columns.ts +184 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-core.ts +125 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-data.ts +496 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-filter.ts +203 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-map.ts +203 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-reshape.ts +580 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-simple.ts +364 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-utils.ts +127 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan-view.ts +126 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.agg.test.ts +189 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.basic.test.ts +283 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.columns.test.ts +120 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.data.test.ts +224 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.filter-sort.test.ts +193 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.frequency.test.ts +85 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.groupby.test.ts +101 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.map.test.ts +163 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.multifile.test.ts +227 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.reshape.test.ts +192 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.select-advanced.test.ts +139 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.transform.test.ts +81 -0
- just_bash-0.1.2/just-bash/src/commands/xan/xan.ts +439 -0
- just_bash-0.1.2/just-bash/src/commands/xargs/xargs.test.ts +355 -0
- just_bash-0.1.2/just-bash/src/commands/xargs/xargs.ts +206 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/products.csv +6 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/semicolon.csv +4 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/special.csv +9 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/tabs.tsv +5 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/users.csv +4 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/app.ini +13 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/config.ini +16 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/special.ini +44 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/nested.json +22 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/special.json +37 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/users.json +21 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/cargo.toml +17 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/config.toml +23 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/pyproject.toml +30 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/special.toml +50 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/books.xml +20 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/special.xml +30 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/users.xml +23 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/simple.yaml +7 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/special.yaml +38 -0
- just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/users.yaml +16 -0
- just_bash-0.1.2/just-bash/src/commands/yq/formats.ts +319 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.env.test.ts +90 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.fixtures.test.ts +768 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.format-strings.test.ts +211 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.navigation.test.ts +195 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.test.ts +944 -0
- just_bash-0.1.2/just-bash/src/commands/yq/yq.ts +381 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/README.md +186 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/alias.comparison.test.ts +49 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/awk.comparison.test.ts +219 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/basename-dirname.comparison.test.ts +128 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/cat.comparison.test.ts +84 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/cd.comparison.test.ts +151 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/column-join.comparison.test.ts +139 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/cut.comparison.test.ts +142 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/echo.comparison.test.ts +69 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/env.comparison.test.ts +88 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/export.comparison.test.ts +86 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/file-operations.comparison.test.ts +309 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/find.comparison.test.ts +241 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/alias.comparison.fixtures.json +26 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/awk.comparison.fixtures.json +196 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/basename-dirname.comparison.fixtures.json +107 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/cat.comparison.fixtures.json +84 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/column-join.comparison.fixtures.json +127 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/cut.comparison.fixtures.json +151 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/echo.comparison.fixtures.json +72 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/export.comparison.fixtures.json +65 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/find.comparison.fixtures.json +236 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/glob.comparison.fixtures.json +111 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/grep.comparison.fixtures.json +300 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/head-tail.comparison.fixtures.json +198 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/here-document.comparison.fixtures.json +37 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/jq.comparison.fixtures.json +250 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/ls.comparison.fixtures.json +128 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/paste.comparison.fixtures.json +170 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/pipes-redirections.comparison.fixtures.json +198 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/sed.comparison.fixtures.json +196 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/sort.comparison.fixtures.json +207 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/strings-split.comparison.fixtures.json +87 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/tar.comparison.fixtures.json +85 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/test.comparison.fixtures.json +307 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/text-processing.comparison.fixtures.json +213 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/tr.comparison.fixtures.json +142 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/uniq.comparison.fixtures.json +147 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/wc.comparison.fixtures.json +130 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/glob.comparison.test.ts +108 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/grep.comparison.test.ts +281 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/head-tail.comparison.test.ts +219 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/here-document.comparison.test.ts +79 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/jq.comparison.test.ts +247 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/ls.comparison.test.ts +130 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/parse-errors.comparison.test.ts +286 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/paste.comparison.test.ts +173 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/pipes-redirections.comparison.test.ts +428 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/sed.comparison.test.ts +195 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/sort.comparison.test.ts +213 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/strings-split.comparison.test.ts +107 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/tar.comparison.test.ts +128 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/tee.comparison.test.ts +125 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/test-helpers.ts +557 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/test.comparison.test.ts +384 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/text-processing.comparison.test.ts +234 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/tr.comparison.test.ts +143 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/uniq.comparison.test.ts +155 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/vitest.setup.ts +9 -0
- just_bash-0.1.2/just-bash/src/comparison-tests/wc.comparison.test.ts +141 -0
- just_bash-0.1.2/just-bash/src/custom-commands.test.ts +293 -0
- just_bash-0.1.2/just-bash/src/custom-commands.ts +66 -0
- just_bash-0.1.2/just-bash/src/fs/in-memory-fs/in-memory-fs.test.ts +312 -0
- just_bash-0.1.2/just-bash/src/fs/in-memory-fs/in-memory-fs.ts +649 -0
- just_bash-0.1.2/just-bash/src/fs/in-memory-fs/index.ts +1 -0
- just_bash-0.1.2/just-bash/src/fs/init.ts +96 -0
- just_bash-0.1.2/just-bash/src/fs/interface.ts +256 -0
- just_bash-0.1.2/just-bash/src/fs/mountable-fs/index.ts +5 -0
- just_bash-0.1.2/just-bash/src/fs/mountable-fs/mountable-fs.test.ts +665 -0
- just_bash-0.1.2/just-bash/src/fs/mountable-fs/mountable-fs.ts +637 -0
- just_bash-0.1.2/just-bash/src/fs/overlay-fs/index.ts +1 -0
- just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.e2e.test.ts +613 -0
- just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.security.test.ts +737 -0
- just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.test.ts +727 -0
- just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.ts +1034 -0
- just_bash-0.1.2/just-bash/src/fs/read-write-fs/index.ts +1 -0
- just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.security.test.ts +419 -0
- just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.test.ts +600 -0
- just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.ts +423 -0
- just_bash-0.1.2/just-bash/src/fs/utils.ts +80 -0
- just_bash-0.1.2/just-bash/src/index.ts +61 -0
- just_bash-0.1.2/just-bash/src/interpreter/arithmetic.ts +949 -0
- just_bash-0.1.2/just-bash/src/interpreter/assoc-array.test.ts +203 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/break.test.ts +181 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/break.ts +39 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/cd.test.ts +97 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/cd.ts +115 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/continue.test.ts +219 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/continue.ts +39 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/declare.ts +362 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/eval.test.ts +161 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/eval.ts +71 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/exit.test.ts +128 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/exit.ts +29 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/export.test.ts +126 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/export.ts +96 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/index.ts +38 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/let.ts +102 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/local.test.ts +173 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/local.ts +80 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/mapfile.ts +131 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/read.test.ts +104 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/read.ts +201 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/return.test.ts +189 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/return.ts +34 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/set.test.ts +496 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/set.ts +288 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/shift.test.ts +199 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/shift.ts +67 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/source.test.ts +155 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/source.ts +136 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/unset.test.ts +124 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/unset.ts +101 -0
- just_bash-0.1.2/just-bash/src/interpreter/builtins/variable-helpers.ts +94 -0
- just_bash-0.1.2/just-bash/src/interpreter/conditionals.ts +635 -0
- just_bash-0.1.2/just-bash/src/interpreter/control-flow.ts +478 -0
- just_bash-0.1.2/just-bash/src/interpreter/errors.ts +200 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion/analysis.ts +200 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion/brace-range.ts +180 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion/pattern.ts +242 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion/variable.ts +262 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion/word-split.ts +108 -0
- just_bash-0.1.2/just-bash/src/interpreter/expansion.ts +1545 -0
- just_bash-0.1.2/just-bash/src/interpreter/functions.ts +84 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/array.ts +77 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/condition.ts +48 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/errors.ts +11 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/file-tests.ts +266 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/ifs.ts +137 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/loop.ts +91 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/numeric-compare.ts +39 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/readonly.ts +44 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/regex.ts +11 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/result.ts +85 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/statements.ts +66 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/string-compare.ts +37 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/string-tests.ts +27 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/variable-tests.ts +62 -0
- just_bash-0.1.2/just-bash/src/interpreter/helpers/word-parts.ts +49 -0
- just_bash-0.1.2/just-bash/src/interpreter/index.ts +7 -0
- just_bash-0.1.2/just-bash/src/interpreter/interpreter.ts +1231 -0
- just_bash-0.1.2/just-bash/src/interpreter/redirections.binary.test.ts +176 -0
- just_bash-0.1.2/just-bash/src/interpreter/redirections.ts +183 -0
- just_bash-0.1.2/just-bash/src/interpreter/types.ts +87 -0
- just_bash-0.1.2/just-bash/src/limits.ts +74 -0
- just_bash-0.1.2/just-bash/src/network/allow-list/bypass.test.ts +549 -0
- just_bash-0.1.2/just-bash/src/network/allow-list/e2e.test.ts +464 -0
- just_bash-0.1.2/just-bash/src/network/allow-list/mock.test.ts +106 -0
- just_bash-0.1.2/just-bash/src/network/allow-list/shared.ts +188 -0
- just_bash-0.1.2/just-bash/src/network/allow-list/unit.test.ts +846 -0
- just_bash-0.1.2/just-bash/src/network/allow-list.ts +148 -0
- just_bash-0.1.2/just-bash/src/network/fetch.ts +189 -0
- just_bash-0.1.2/just-bash/src/network/index.ts +20 -0
- just_bash-0.1.2/just-bash/src/network/types.ts +119 -0
- just_bash-0.1.2/just-bash/src/parser/arithmetic-parser.ts +903 -0
- just_bash-0.1.2/just-bash/src/parser/command-parser.ts +299 -0
- just_bash-0.1.2/just-bash/src/parser/compound-parser.ts +388 -0
- just_bash-0.1.2/just-bash/src/parser/conditional-parser.ts +203 -0
- just_bash-0.1.2/just-bash/src/parser/expansion-parser.ts +800 -0
- just_bash-0.1.2/just-bash/src/parser/lexer.ts +1507 -0
- just_bash-0.1.2/just-bash/src/parser/parser.ts +1045 -0
- just_bash-0.1.2/just-bash/src/parser/types.ts +60 -0
- just_bash-0.1.2/just-bash/src/parser/word-parser.ts +593 -0
- just_bash-0.1.2/just-bash/src/readme.test.ts +522 -0
- just_bash-0.1.2/just-bash/src/sandbox/Command.ts +92 -0
- just_bash-0.1.2/just-bash/src/sandbox/Sandbox.test.ts +403 -0
- just_bash-0.1.2/just-bash/src/sandbox/Sandbox.ts +137 -0
- just_bash-0.1.2/just-bash/src/sandbox/index.ts +10 -0
- just_bash-0.1.2/just-bash/src/shared/operators.ts +33 -0
- just_bash-0.1.2/just-bash/src/shell/glob.ts +518 -0
- just_bash-0.1.2/just-bash/src/shell-metadata.ts +49 -0
- just_bash-0.1.2/just-bash/src/spec-tests/KNOWN_LIMITATIONS.md +486 -0
- just_bash-0.1.2/just-bash/src/spec-tests/README.md +72 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/LICENSE-APACHE-2.0.txt +207 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/alias.test.sh +573 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/append.test.sh +324 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/arg-parse.test.sh +52 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/arith-context.test.sh +245 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/arith-dynamic.test.sh +95 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/arith.test.sh +1054 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-assign.test.sh +377 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-assoc.test.sh +795 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-basic.test.sh +45 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-compat.test.sh +188 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-literal.test.sh +336 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array-sparse.test.sh +1240 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/array.test.sh +1054 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-deferred.test.sh +115 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-dialects.test.sh +151 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-extended.test.sh +990 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/assign.test.sh +783 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/background.test.sh +425 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-features.test.sh +392 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-idioms.test.sh +576 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-unset.test.sh +248 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/blog-other1.test.sh +66 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/blog1.test.sh +96 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/blog2.test.sh +60 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/bool-parse.test.sh +176 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/brace-expansion.test.sh +507 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/bugs.test.sh +455 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bash.test.sh +226 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bind.test.sh +159 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bracket.test.sh +776 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-cd.test.sh +532 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-completion.test.sh +654 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-dirs.test.sh +261 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-echo.test.sh +331 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-eval-source.test.sh +382 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-fc.test.sh +276 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-getopts.test.sh +492 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-history.test.sh +418 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-kill.test.sh +366 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-meta-assign.test.sh +377 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-meta.test.sh +395 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-misc.test.sh +167 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-printf.test.sh +1615 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-process.test.sh +628 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-read.test.sh +1217 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-set.test.sh +431 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-special.test.sh +319 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-times.test.sh +16 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap-bash.test.sh +661 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap-err.test.sh +651 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap.test.sh +614 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-type-bash.test.sh +369 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-type.test.sh +166 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-vars.test.sh +709 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/case_.test.sh +245 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/command-parsing.test.sh +67 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/command-sub-ksh.test.sh +112 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/command-sub.test.sh +305 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/command_.test.sh +256 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/comments.test.sh +12 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/dbracket.test.sh +493 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/divergence.test.sh +118 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/dparen.test.sh +212 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/empty-bodies.test.sh +25 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/errexit.test.sh +539 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/exit-status.test.sh +324 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/explore-parsing.test.sh +43 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/extglob-files.test.sh +407 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/extglob-match.test.sh +391 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/fatal-errors.test.sh +192 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/for-expr.test.sh +173 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/func-parsing.test.sh +108 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/glob-bash.test.sh +144 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/glob.test.sh +420 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/globignore.test.sh +232 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/globstar.test.sh +98 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/here-doc.test.sh +436 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/if_.test.sh +55 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/interactive-parse.test.sh +38 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/interactive.test.sh +418 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/introspect.test.sh +294 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/known-differences.test.sh +29 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/let.test.sh +23 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/loop.test.sh +627 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/nameref.test.sh +637 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/nix-idioms.test.sh +197 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/nocasematch-match.test.sh +71 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/nul-bytes.test.sh +530 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/paren-ambiguity.test.sh +152 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/parse-errors.test.sh +221 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/pipeline.test.sh +285 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/posix.test.sh +162 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/print-source-code.test.sh +67 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/process-sub.test.sh +204 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/prompt.test.sh +353 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/quote.test.sh +314 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/redir-order.test.sh +71 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect-command.test.sh +344 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect-multi.test.sh +312 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect.test.sh +639 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/regex.test.sh +643 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/serialize.test.sh +239 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-func.test.sh +186 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-options-bash.test.sh +155 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-options.test.sh +771 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-usage.test.sh +253 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/shell-bugs.test.sh +36 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/shell-grammar.test.sh +208 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/smoke.test.sh +126 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/spec-harness-bug.test.sh +9 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/strict-options.test.sh +355 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/subshell.test.sh +24 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/temp-binding.test.sh +162 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/tilde.test.sh +184 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/toysh-posix.test.sh +403 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/toysh.test.sh +144 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/type-compat.test.sh +159 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/unicode.test.sh +203 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-num.test.sh +45 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-bash.test.sh +544 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-len.test.sh +273 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-patsub.test.sh +415 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-slice.test.sh +414 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-strip.test.sh +407 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-test.test.sh +841 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-ref.test.sh +776 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-sub-quote.test.sh +370 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/var-sub.test.sh +66 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/vars-bash.test.sh +32 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/vars-special.test.sh +810 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/whitespace.test.sh +119 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/word-eval.test.sh +67 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/word-split.test.sh +940 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/xtrace.test.sh +431 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/zsh-assoc.test.sh +64 -0
- just_bash-0.1.2/just-bash/src/spec-tests/cases/zsh-idioms.test.sh +58 -0
- just_bash-0.1.2/just-bash/src/spec-tests/parser.ts +438 -0
- just_bash-0.1.2/just-bash/src/spec-tests/runner.ts +291 -0
- just_bash-0.1.2/just-bash/src/spec-tests/spec-helpers.ts +71 -0
- just_bash-0.1.2/just-bash/src/spec-tests/spec.test.ts +230 -0
- just_bash-0.1.2/just-bash/src/syntax/break-continue.test.ts +171 -0
- just_bash-0.1.2/just-bash/src/syntax/case-statement.test.ts +202 -0
- just_bash-0.1.2/just-bash/src/syntax/command-substitution.test.ts +183 -0
- just_bash-0.1.2/just-bash/src/syntax/composition.test.ts +509 -0
- just_bash-0.1.2/just-bash/src/syntax/control-flow.test.ts +351 -0
- just_bash-0.1.2/just-bash/src/syntax/execution-protection.test.ts +625 -0
- just_bash-0.1.2/just-bash/src/syntax/here-document.test.ts +128 -0
- just_bash-0.1.2/just-bash/src/syntax/loops.test.ts +207 -0
- just_bash-0.1.2/just-bash/src/syntax/operators.test.ts +361 -0
- just_bash-0.1.2/just-bash/src/syntax/parse-errors.test.ts +222 -0
- just_bash-0.1.2/just-bash/src/syntax/parser-edge-cases.test.ts +330 -0
- just_bash-0.1.2/just-bash/src/syntax/parser-protection.test.ts +230 -0
- just_bash-0.1.2/just-bash/src/syntax/set-errexit.test.ts +360 -0
- just_bash-0.1.2/just-bash/src/syntax/set-pipefail.test.ts +116 -0
- just_bash-0.1.2/just-bash/src/syntax/source.test.ts +65 -0
- just_bash-0.1.2/just-bash/src/syntax/subshell-args.test.ts +165 -0
- just_bash-0.1.2/just-bash/src/syntax/variables.test.ts +286 -0
- just_bash-0.1.2/just-bash/src/types.ts +119 -0
- just_bash-0.1.2/just-bash/src/utils/args.ts +196 -0
- just_bash-0.1.2/just-bash/src/utils/constants.ts +16 -0
- just_bash-0.1.2/just-bash/src/utils/file-reader.ts +148 -0
- just_bash-0.1.2/just-bash/src/utils/glob.ts +101 -0
- just_bash-0.1.2/just-bash/tsconfig.json +17 -0
- just_bash-0.1.2/just-bash/vitest.comparison.config.ts +10 -0
- just_bash-0.1.2/just-bash/vitest.config.ts +10 -0
- just_bash-0.1.2/just-bash/vitest.unit.config.ts +9 -0
- just_bash-0.1.2/pyproject.toml +66 -0
- just_bash-0.1.2/src/just_bash/__init__.py +55 -0
- just_bash-0.1.2/src/just_bash/ast/__init__.py +213 -0
- just_bash-0.1.2/src/just_bash/ast/factory.py +320 -0
- just_bash-0.1.2/src/just_bash/ast/types.py +953 -0
- just_bash-0.1.2/src/just_bash/bash.py +210 -0
- just_bash-0.1.2/src/just_bash/commands/__init__.py +23 -0
- just_bash-0.1.2/src/just_bash/commands/argv/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/argv/argv.py +21 -0
- just_bash-0.1.2/src/just_bash/commands/awk/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/awk/awk.py +1168 -0
- just_bash-0.1.2/src/just_bash/commands/base64/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/base64/base64.py +138 -0
- just_bash-0.1.2/src/just_bash/commands/basename/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/basename/basename.py +72 -0
- just_bash-0.1.2/src/just_bash/commands/bash/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/bash/bash.py +188 -0
- just_bash-0.1.2/src/just_bash/commands/cat/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/cat/cat.py +173 -0
- just_bash-0.1.2/src/just_bash/commands/checksum/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/checksum/checksum.py +179 -0
- just_bash-0.1.2/src/just_bash/commands/chmod/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/chmod/chmod.py +216 -0
- just_bash-0.1.2/src/just_bash/commands/column/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/column/column.py +180 -0
- just_bash-0.1.2/src/just_bash/commands/comm/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/comm/comm.py +150 -0
- just_bash-0.1.2/src/just_bash/commands/compression/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/compression/compression.py +181 -0
- just_bash-0.1.2/src/just_bash/commands/cp/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/cp/cp.py +149 -0
- just_bash-0.1.2/src/just_bash/commands/curl/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/curl/curl.py +677 -0
- just_bash-0.1.2/src/just_bash/commands/cut/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/cut/cut.py +327 -0
- just_bash-0.1.2/src/just_bash/commands/date/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/date/date.py +258 -0
- just_bash-0.1.2/src/just_bash/commands/diff/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/diff/diff.py +118 -0
- just_bash-0.1.2/src/just_bash/commands/dirname/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/dirname/dirname.py +56 -0
- just_bash-0.1.2/src/just_bash/commands/du/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/du/du.py +150 -0
- just_bash-0.1.2/src/just_bash/commands/echo/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/echo/echo.py +125 -0
- just_bash-0.1.2/src/just_bash/commands/expand/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/expand/expand.py +299 -0
- just_bash-0.1.2/src/just_bash/commands/expr/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/expr/expr.py +273 -0
- just_bash-0.1.2/src/just_bash/commands/file/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/file/file.py +151 -0
- just_bash-0.1.2/src/just_bash/commands/find/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/find/find.py +622 -0
- just_bash-0.1.2/src/just_bash/commands/fold/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/fold/fold.py +160 -0
- just_bash-0.1.2/src/just_bash/commands/grep/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/grep/grep.py +412 -0
- just_bash-0.1.2/src/just_bash/commands/head/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/head/head.py +167 -0
- just_bash-0.1.2/src/just_bash/commands/help/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/help/help.py +67 -0
- just_bash-0.1.2/src/just_bash/commands/hostname/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/hostname/hostname.py +21 -0
- just_bash-0.1.2/src/just_bash/commands/join/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/join/join.py +252 -0
- just_bash-0.1.2/src/just_bash/commands/jq/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/jq/jq.py +965 -0
- just_bash-0.1.2/src/just_bash/commands/ln/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/ln/ln.py +127 -0
- just_bash-0.1.2/src/just_bash/commands/ls/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/ls/ls.py +238 -0
- just_bash-0.1.2/src/just_bash/commands/mkdir/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/mkdir/mkdir.py +92 -0
- just_bash-0.1.2/src/just_bash/commands/mv/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/mv/mv.py +142 -0
- just_bash-0.1.2/src/just_bash/commands/nl/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/nl/nl.py +180 -0
- just_bash-0.1.2/src/just_bash/commands/od/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/od/od.py +157 -0
- just_bash-0.1.2/src/just_bash/commands/paste/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/paste/paste.py +100 -0
- just_bash-0.1.2/src/just_bash/commands/printf/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/printf/printf.py +157 -0
- just_bash-0.1.2/src/just_bash/commands/pwd/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/pwd/pwd.py +23 -0
- just_bash-0.1.2/src/just_bash/commands/read/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/read/read.py +185 -0
- just_bash-0.1.2/src/just_bash/commands/readlink/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/readlink/readlink.py +86 -0
- just_bash-0.1.2/src/just_bash/commands/registry.py +834 -0
- just_bash-0.1.2/src/just_bash/commands/rev/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/rev/rev.py +74 -0
- just_bash-0.1.2/src/just_bash/commands/rg/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/rg/rg.py +1048 -0
- just_bash-0.1.2/src/just_bash/commands/rm/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/rm/rm.py +106 -0
- just_bash-0.1.2/src/just_bash/commands/sed/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/sed/sed.py +737 -0
- just_bash-0.1.2/src/just_bash/commands/seq/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/seq/seq.py +190 -0
- just_bash-0.1.2/src/just_bash/commands/shell/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/shell/shell.py +166 -0
- just_bash-0.1.2/src/just_bash/commands/sleep/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/sleep/sleep.py +62 -0
- just_bash-0.1.2/src/just_bash/commands/sort/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/sort/sort.py +401 -0
- just_bash-0.1.2/src/just_bash/commands/split/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/split/split.py +190 -0
- just_bash-0.1.2/src/just_bash/commands/sqlite3/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/sqlite3/sqlite3_cmd.py +505 -0
- just_bash-0.1.2/src/just_bash/commands/stat/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/stat/stat.py +138 -0
- just_bash-0.1.2/src/just_bash/commands/strings/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/strings/strings.py +150 -0
- just_bash-0.1.2/src/just_bash/commands/tac/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tac/tac.py +55 -0
- just_bash-0.1.2/src/just_bash/commands/tail/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tail/tail.py +180 -0
- just_bash-0.1.2/src/just_bash/commands/tar/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tar/tar.py +567 -0
- just_bash-0.1.2/src/just_bash/commands/tee/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tee/tee.py +63 -0
- just_bash-0.1.2/src/just_bash/commands/timeout/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/timeout/timeout.py +108 -0
- just_bash-0.1.2/src/just_bash/commands/touch/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/touch/touch.py +85 -0
- just_bash-0.1.2/src/just_bash/commands/tr/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tr/tr.py +297 -0
- just_bash-0.1.2/src/just_bash/commands/tree/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/tree/tree.py +139 -0
- just_bash-0.1.2/src/just_bash/commands/true/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/true/true.py +32 -0
- just_bash-0.1.2/src/just_bash/commands/uniq/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/uniq/uniq.py +323 -0
- just_bash-0.1.2/src/just_bash/commands/wc/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/wc/wc.py +169 -0
- just_bash-0.1.2/src/just_bash/commands/which/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/which/which.py +52 -0
- just_bash-0.1.2/src/just_bash/commands/xan/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/xan/xan.py +693 -0
- just_bash-0.1.2/src/just_bash/commands/xargs/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/xargs/xargs.py +136 -0
- just_bash-0.1.2/src/just_bash/commands/yq/__init__.py +5 -0
- just_bash-0.1.2/src/just_bash/commands/yq/yq.py +795 -0
- just_bash-0.1.2/src/just_bash/fs/__init__.py +19 -0
- just_bash-0.1.2/src/just_bash/fs/in_memory_fs.py +621 -0
- just_bash-0.1.2/src/just_bash/interpreter/__init__.py +37 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/__init__.py +92 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/alias.py +154 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/cd.py +76 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/control.py +127 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/declare.py +336 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/export.py +56 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/let.py +44 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/local.py +57 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/mapfile.py +152 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/misc.py +378 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/readonly.py +80 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/set.py +234 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/shopt.py +201 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/source.py +136 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/test.py +290 -0
- just_bash-0.1.2/src/just_bash/interpreter/builtins/unset.py +53 -0
- just_bash-0.1.2/src/just_bash/interpreter/conditionals.py +387 -0
- just_bash-0.1.2/src/just_bash/interpreter/control_flow.py +381 -0
- just_bash-0.1.2/src/just_bash/interpreter/errors.py +116 -0
- just_bash-0.1.2/src/just_bash/interpreter/expansion.py +1156 -0
- just_bash-0.1.2/src/just_bash/interpreter/interpreter.py +813 -0
- just_bash-0.1.2/src/just_bash/interpreter/types.py +134 -0
- just_bash-0.1.2/src/just_bash/network/__init__.py +1 -0
- just_bash-0.1.2/src/just_bash/parser/__init__.py +39 -0
- just_bash-0.1.2/src/just_bash/parser/lexer.py +948 -0
- just_bash-0.1.2/src/just_bash/parser/parser.py +2162 -0
- just_bash-0.1.2/src/just_bash/py.typed +0 -0
- just_bash-0.1.2/src/just_bash/types.py +180 -0
- just_bash-0.1.2/tests/comparison_tests/__init__.py +1 -0
- just_bash-0.1.2/tests/comparison_tests/fixtures/sqlite3_comparison.fixtures.json +114 -0
- just_bash-0.1.2/tests/comparison_tests/test_helpers.py +206 -0
- just_bash-0.1.2/tests/comparison_tests/test_sqlite3_comparison.py +106 -0
- just_bash-0.1.2/tests/conftest.py +13 -0
- just_bash-0.1.2/tests/spec_tests/KNOWN_LIMITATIONS.md +415 -0
- just_bash-0.1.2/tests/spec_tests/README.md +135 -0
- just_bash-0.1.2/tests/spec_tests/__init__.py +13 -0
- just_bash-0.1.2/tests/spec_tests/cases/LICENSE-APACHE-2.0.txt +207 -0
- just_bash-0.1.2/tests/spec_tests/cases/alias.test.sh +573 -0
- just_bash-0.1.2/tests/spec_tests/cases/append.test.sh +324 -0
- just_bash-0.1.2/tests/spec_tests/cases/arg-parse.test.sh +52 -0
- just_bash-0.1.2/tests/spec_tests/cases/arith-context.test.sh +245 -0
- just_bash-0.1.2/tests/spec_tests/cases/arith-dynamic.test.sh +95 -0
- just_bash-0.1.2/tests/spec_tests/cases/arith.test.sh +1054 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-assign.test.sh +377 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-assoc.test.sh +795 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-basic.test.sh +45 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-compat.test.sh +188 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-literal.test.sh +336 -0
- just_bash-0.1.2/tests/spec_tests/cases/array-sparse.test.sh +1240 -0
- just_bash-0.1.2/tests/spec_tests/cases/array.test.sh +1054 -0
- just_bash-0.1.2/tests/spec_tests/cases/assign-deferred.test.sh +115 -0
- just_bash-0.1.2/tests/spec_tests/cases/assign-dialects.test.sh +151 -0
- just_bash-0.1.2/tests/spec_tests/cases/assign-extended.test.sh +990 -0
- just_bash-0.1.2/tests/spec_tests/cases/assign.test.sh +783 -0
- just_bash-0.1.2/tests/spec_tests/cases/background.test.sh +425 -0
- just_bash-0.1.2/tests/spec_tests/cases/ble-features.test.sh +392 -0
- just_bash-0.1.2/tests/spec_tests/cases/ble-idioms.test.sh +576 -0
- just_bash-0.1.2/tests/spec_tests/cases/ble-unset.test.sh +248 -0
- just_bash-0.1.2/tests/spec_tests/cases/blog-other1.test.sh +66 -0
- just_bash-0.1.2/tests/spec_tests/cases/blog1.test.sh +96 -0
- just_bash-0.1.2/tests/spec_tests/cases/blog2.test.sh +60 -0
- just_bash-0.1.2/tests/spec_tests/cases/bool-parse.test.sh +176 -0
- just_bash-0.1.2/tests/spec_tests/cases/brace-expansion.test.sh +507 -0
- just_bash-0.1.2/tests/spec_tests/cases/bugs.test.sh +455 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-bash.test.sh +226 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-bind.test.sh +159 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-bracket.test.sh +776 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-cd.test.sh +532 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-completion.test.sh +654 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-dirs.test.sh +261 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-echo.test.sh +331 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-eval-source.test.sh +382 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-fc.test.sh +276 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-getopts.test.sh +492 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-history.test.sh +418 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-kill.test.sh +366 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-meta-assign.test.sh +377 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-meta.test.sh +395 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-misc.test.sh +167 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-printf.test.sh +1615 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-process.test.sh +628 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-read.test.sh +1217 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-set.test.sh +431 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-special.test.sh +319 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-times.test.sh +16 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-trap-bash.test.sh +661 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-trap-err.test.sh +651 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-trap.test.sh +614 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-type-bash.test.sh +369 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-type.test.sh +166 -0
- just_bash-0.1.2/tests/spec_tests/cases/builtin-vars.test.sh +709 -0
- just_bash-0.1.2/tests/spec_tests/cases/case_.test.sh +245 -0
- just_bash-0.1.2/tests/spec_tests/cases/command-parsing.test.sh +67 -0
- just_bash-0.1.2/tests/spec_tests/cases/command-sub-ksh.test.sh +112 -0
- just_bash-0.1.2/tests/spec_tests/cases/command-sub.test.sh +305 -0
- just_bash-0.1.2/tests/spec_tests/cases/command_.test.sh +256 -0
- just_bash-0.1.2/tests/spec_tests/cases/comments.test.sh +12 -0
- just_bash-0.1.2/tests/spec_tests/cases/dbracket.test.sh +493 -0
- just_bash-0.1.2/tests/spec_tests/cases/divergence.test.sh +118 -0
- just_bash-0.1.2/tests/spec_tests/cases/dparen.test.sh +212 -0
- just_bash-0.1.2/tests/spec_tests/cases/empty-bodies.test.sh +25 -0
- just_bash-0.1.2/tests/spec_tests/cases/errexit.test.sh +539 -0
- just_bash-0.1.2/tests/spec_tests/cases/exit-status.test.sh +324 -0
- just_bash-0.1.2/tests/spec_tests/cases/explore-parsing.test.sh +43 -0
- just_bash-0.1.2/tests/spec_tests/cases/extglob-files.test.sh +407 -0
- just_bash-0.1.2/tests/spec_tests/cases/extglob-match.test.sh +391 -0
- just_bash-0.1.2/tests/spec_tests/cases/fatal-errors.test.sh +192 -0
- just_bash-0.1.2/tests/spec_tests/cases/for-expr.test.sh +173 -0
- just_bash-0.1.2/tests/spec_tests/cases/func-parsing.test.sh +108 -0
- just_bash-0.1.2/tests/spec_tests/cases/glob-bash.test.sh +144 -0
- just_bash-0.1.2/tests/spec_tests/cases/glob.test.sh +420 -0
- just_bash-0.1.2/tests/spec_tests/cases/globignore.test.sh +232 -0
- just_bash-0.1.2/tests/spec_tests/cases/globstar.test.sh +98 -0
- just_bash-0.1.2/tests/spec_tests/cases/here-doc.test.sh +436 -0
- just_bash-0.1.2/tests/spec_tests/cases/if_.test.sh +55 -0
- just_bash-0.1.2/tests/spec_tests/cases/interactive-parse.test.sh +38 -0
- just_bash-0.1.2/tests/spec_tests/cases/interactive.test.sh +418 -0
- just_bash-0.1.2/tests/spec_tests/cases/introspect.test.sh +294 -0
- just_bash-0.1.2/tests/spec_tests/cases/known-differences.test.sh +29 -0
- just_bash-0.1.2/tests/spec_tests/cases/let.test.sh +23 -0
- just_bash-0.1.2/tests/spec_tests/cases/loop.test.sh +627 -0
- just_bash-0.1.2/tests/spec_tests/cases/nameref.test.sh +637 -0
- just_bash-0.1.2/tests/spec_tests/cases/nix-idioms.test.sh +197 -0
- just_bash-0.1.2/tests/spec_tests/cases/nocasematch-match.test.sh +71 -0
- just_bash-0.1.2/tests/spec_tests/cases/nul-bytes.test.sh +530 -0
- just_bash-0.1.2/tests/spec_tests/cases/paren-ambiguity.test.sh +152 -0
- just_bash-0.1.2/tests/spec_tests/cases/parse-errors.test.sh +221 -0
- just_bash-0.1.2/tests/spec_tests/cases/pipeline.test.sh +285 -0
- just_bash-0.1.2/tests/spec_tests/cases/posix.test.sh +162 -0
- just_bash-0.1.2/tests/spec_tests/cases/print-source-code.test.sh +67 -0
- just_bash-0.1.2/tests/spec_tests/cases/process-sub.test.sh +204 -0
- just_bash-0.1.2/tests/spec_tests/cases/prompt.test.sh +353 -0
- just_bash-0.1.2/tests/spec_tests/cases/quote.test.sh +314 -0
- just_bash-0.1.2/tests/spec_tests/cases/redir-order.test.sh +71 -0
- just_bash-0.1.2/tests/spec_tests/cases/redirect-command.test.sh +344 -0
- just_bash-0.1.2/tests/spec_tests/cases/redirect-multi.test.sh +312 -0
- just_bash-0.1.2/tests/spec_tests/cases/redirect.test.sh +639 -0
- just_bash-0.1.2/tests/spec_tests/cases/regex.test.sh +643 -0
- just_bash-0.1.2/tests/spec_tests/cases/serialize.test.sh +239 -0
- just_bash-0.1.2/tests/spec_tests/cases/sh-func.test.sh +186 -0
- just_bash-0.1.2/tests/spec_tests/cases/sh-options-bash.test.sh +155 -0
- just_bash-0.1.2/tests/spec_tests/cases/sh-options.test.sh +771 -0
- just_bash-0.1.2/tests/spec_tests/cases/sh-usage.test.sh +253 -0
- just_bash-0.1.2/tests/spec_tests/cases/shell-bugs.test.sh +36 -0
- just_bash-0.1.2/tests/spec_tests/cases/shell-grammar.test.sh +208 -0
- just_bash-0.1.2/tests/spec_tests/cases/smoke.test.sh +126 -0
- just_bash-0.1.2/tests/spec_tests/cases/spec-harness-bug.test.sh +9 -0
- just_bash-0.1.2/tests/spec_tests/cases/strict-options.test.sh +355 -0
- just_bash-0.1.2/tests/spec_tests/cases/subshell.test.sh +24 -0
- just_bash-0.1.2/tests/spec_tests/cases/temp-binding.test.sh +162 -0
- just_bash-0.1.2/tests/spec_tests/cases/tilde.test.sh +184 -0
- just_bash-0.1.2/tests/spec_tests/cases/toysh-posix.test.sh +403 -0
- just_bash-0.1.2/tests/spec_tests/cases/toysh.test.sh +144 -0
- just_bash-0.1.2/tests/spec_tests/cases/type-compat.test.sh +159 -0
- just_bash-0.1.2/tests/spec_tests/cases/unicode.test.sh +203 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-num.test.sh +45 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-bash.test.sh +544 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-len.test.sh +273 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-patsub.test.sh +415 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-slice.test.sh +414 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-strip.test.sh +407 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-op-test.test.sh +841 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-ref.test.sh +776 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-sub-quote.test.sh +370 -0
- just_bash-0.1.2/tests/spec_tests/cases/var-sub.test.sh +66 -0
- just_bash-0.1.2/tests/spec_tests/cases/vars-bash.test.sh +32 -0
- just_bash-0.1.2/tests/spec_tests/cases/vars-special.test.sh +810 -0
- just_bash-0.1.2/tests/spec_tests/cases/whitespace.test.sh +119 -0
- just_bash-0.1.2/tests/spec_tests/cases/word-eval.test.sh +67 -0
- just_bash-0.1.2/tests/spec_tests/cases/word-split.test.sh +940 -0
- just_bash-0.1.2/tests/spec_tests/cases/xtrace.test.sh +431 -0
- just_bash-0.1.2/tests/spec_tests/cases/zsh-assoc.test.sh +64 -0
- just_bash-0.1.2/tests/spec_tests/cases/zsh-idioms.test.sh +58 -0
- just_bash-0.1.2/tests/spec_tests/helpers.py +94 -0
- just_bash-0.1.2/tests/spec_tests/parser.py +396 -0
- just_bash-0.1.2/tests/spec_tests/runner.py +282 -0
- just_bash-0.1.2/tests/spec_tests/test_spec.py +197 -0
- just_bash-0.1.2/tests/test_commands/__init__.py +1 -0
- just_bash-0.1.2/tests/test_commands/test_alias.py +202 -0
- just_bash-0.1.2/tests/test_commands/test_awk.py +266 -0
- just_bash-0.1.2/tests/test_commands/test_comm.py +218 -0
- just_bash-0.1.2/tests/test_commands/test_commands.py +5034 -0
- just_bash-0.1.2/tests/test_commands/test_compression.py +249 -0
- just_bash-0.1.2/tests/test_commands/test_file.py +100 -0
- just_bash-0.1.2/tests/test_commands/test_find.py +140 -0
- just_bash-0.1.2/tests/test_commands/test_grep.py +282 -0
- just_bash-0.1.2/tests/test_commands/test_minor_commands.py +198 -0
- just_bash-0.1.2/tests/test_commands/test_rg.py +745 -0
- just_bash-0.1.2/tests/test_commands/test_sed.py +224 -0
- just_bash-0.1.2/tests/test_commands/test_sort.py +142 -0
- just_bash-0.1.2/tests/test_commands/test_sqlite3.py +313 -0
- just_bash-0.1.2/tests/test_commands/test_tar.py +109 -0
- just_bash-0.1.2/tests/test_commands/test_test.py +293 -0
- just_bash-0.1.2/tests/test_commands/test_xargs.py +183 -0
- just_bash-0.1.2/tests/test_fs/__init__.py +1 -0
- just_bash-0.1.2/tests/test_fs/test_in_memory_fs.py +276 -0
- just_bash-0.1.2/tests/test_interpreter/__init__.py +1 -0
- just_bash-0.1.2/tests/test_interpreter/test_expansion.py +195 -0
- just_bash-0.1.2/tests/test_interpreter/test_interpreter.py +340 -0
- just_bash-0.1.2/tests/test_parser/__init__.py +1 -0
- just_bash-0.1.2/tests/test_parser/test_lexer.py +207 -0
- just_bash-0.1.2/tests/test_parser/test_parser.py +191 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# PyInstaller
|
|
28
|
+
*.manifest
|
|
29
|
+
*.spec
|
|
30
|
+
|
|
31
|
+
# Installer logs
|
|
32
|
+
pip-log.txt
|
|
33
|
+
pip-delete-this-directory.txt
|
|
34
|
+
|
|
35
|
+
# Unit test / coverage reports
|
|
36
|
+
htmlcov/
|
|
37
|
+
.tox/
|
|
38
|
+
.nox/
|
|
39
|
+
.coverage
|
|
40
|
+
.coverage.*
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
*.cover
|
|
45
|
+
*.py,cover
|
|
46
|
+
.hypothesis/
|
|
47
|
+
.pytest_cache/
|
|
48
|
+
|
|
49
|
+
# Translations
|
|
50
|
+
*.mo
|
|
51
|
+
*.pot
|
|
52
|
+
|
|
53
|
+
# Environments
|
|
54
|
+
.env
|
|
55
|
+
.venv
|
|
56
|
+
env/
|
|
57
|
+
venv/
|
|
58
|
+
ENV/
|
|
59
|
+
env.bak/
|
|
60
|
+
venv.bak/
|
|
61
|
+
|
|
62
|
+
# Spyder project settings
|
|
63
|
+
.spyderproject
|
|
64
|
+
.spyproject
|
|
65
|
+
|
|
66
|
+
# Rope project settings
|
|
67
|
+
.ropeproject
|
|
68
|
+
|
|
69
|
+
# mkdocs documentation
|
|
70
|
+
/site
|
|
71
|
+
|
|
72
|
+
# mypy
|
|
73
|
+
.mypy_cache/
|
|
74
|
+
.dmypy.json
|
|
75
|
+
dmypy.json
|
|
76
|
+
|
|
77
|
+
# Pyre type checker
|
|
78
|
+
.pyre/
|
|
79
|
+
|
|
80
|
+
# pytype static type analyzer
|
|
81
|
+
.pytype/
|
|
82
|
+
|
|
83
|
+
# Cython debug symbols
|
|
84
|
+
cython_debug/
|
|
85
|
+
|
|
86
|
+
# IDEs
|
|
87
|
+
.idea/
|
|
88
|
+
.vscode/
|
|
89
|
+
*.swp
|
|
90
|
+
*.swo
|
|
91
|
+
*~
|
|
92
|
+
|
|
93
|
+
# OS files
|
|
94
|
+
.DS_Store
|
|
95
|
+
Thumbs.db
|
|
96
|
+
|
|
97
|
+
# Project specific
|
|
98
|
+
*.log
|
|
99
|
+
.claude/
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
just-bash-py is a Python port of the just-bash TypeScript library - a pure Python bash interpreter with an in-memory virtual filesystem. Designed for AI agents needing a secure, sandboxed bash environment.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install dependencies
|
|
13
|
+
pip install -e ".[dev]"
|
|
14
|
+
|
|
15
|
+
# Run tests
|
|
16
|
+
pytest tests/ -v
|
|
17
|
+
|
|
18
|
+
# Run specific test file
|
|
19
|
+
pytest tests/test_commands/test_commands.py -v
|
|
20
|
+
|
|
21
|
+
# Run tests matching pattern
|
|
22
|
+
pytest tests/ -v -k "grep"
|
|
23
|
+
|
|
24
|
+
# Type checking
|
|
25
|
+
mypy src/
|
|
26
|
+
|
|
27
|
+
# Format code
|
|
28
|
+
ruff format src/ tests/
|
|
29
|
+
ruff check src/ tests/ --fix
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Test-Driven Development (TDD)
|
|
33
|
+
|
|
34
|
+
**CRITICAL: Always write tests FIRST, before implementing features.**
|
|
35
|
+
|
|
36
|
+
### TDD Workflow
|
|
37
|
+
|
|
38
|
+
1. **Write a failing test first** - Define the expected behavior before writing any implementation code
|
|
39
|
+
2. **Run the test and watch it fail** - Verify the test fails for the right reason
|
|
40
|
+
3. **Write minimal code to pass** - Implement just enough to make the test pass
|
|
41
|
+
4. **Refactor** - Clean up while keeping tests green
|
|
42
|
+
5. **Repeat** - Add more tests for edge cases and additional features
|
|
43
|
+
|
|
44
|
+
### Test Structure
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import pytest
|
|
48
|
+
from just_bash import Bash
|
|
49
|
+
|
|
50
|
+
class TestNewCommand:
|
|
51
|
+
"""Test new_command implementation."""
|
|
52
|
+
|
|
53
|
+
@pytest.mark.asyncio
|
|
54
|
+
async def test_basic_usage(self):
|
|
55
|
+
bash = Bash(files={"/input.txt": "content"})
|
|
56
|
+
result = await bash.exec("new_command /input.txt")
|
|
57
|
+
assert result.stdout == "expected output\n"
|
|
58
|
+
assert result.exit_code == 0
|
|
59
|
+
|
|
60
|
+
@pytest.mark.asyncio
|
|
61
|
+
async def test_with_flag(self):
|
|
62
|
+
bash = Bash(files={"/input.txt": "content"})
|
|
63
|
+
result = await bash.exec("new_command -f /input.txt")
|
|
64
|
+
assert result.stdout == "expected with flag\n"
|
|
65
|
+
|
|
66
|
+
@pytest.mark.asyncio
|
|
67
|
+
async def test_error_case(self):
|
|
68
|
+
bash = Bash()
|
|
69
|
+
result = await bash.exec("new_command /nonexistent")
|
|
70
|
+
assert "No such file" in result.stderr
|
|
71
|
+
assert result.exit_code == 1
|
|
72
|
+
|
|
73
|
+
@pytest.mark.asyncio
|
|
74
|
+
async def test_stdin(self):
|
|
75
|
+
bash = Bash()
|
|
76
|
+
result = await bash.exec("echo input | new_command")
|
|
77
|
+
assert result.stdout == "processed input\n"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Test Guidelines
|
|
81
|
+
|
|
82
|
+
- **Assert full stdout/stderr** - Don't use partial matches when exact output is known
|
|
83
|
+
- **Test error cases** - Always test what happens with invalid input
|
|
84
|
+
- **Test stdin** - If the command reads from stdin, test it with pipes
|
|
85
|
+
- **Test flags** - Each flag should have at least one test
|
|
86
|
+
- **Use descriptive test names** - `test_grep_ignore_case_flag` not `test_grep_2`
|
|
87
|
+
|
|
88
|
+
## Architecture
|
|
89
|
+
|
|
90
|
+
### Core Pipeline
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Input Script → Parser (src/just_bash/parser/) → AST → Interpreter (src/just_bash/interpreter/) → ExecResult
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Key Modules
|
|
97
|
+
|
|
98
|
+
- **Parser** (`src/just_bash/parser/`): Lexer and recursive descent parser
|
|
99
|
+
- **Interpreter** (`src/just_bash/interpreter/`): AST execution, expansion, builtins
|
|
100
|
+
- **Commands** (`src/just_bash/commands/`): External command implementations
|
|
101
|
+
- **Filesystem** (`src/just_bash/fs/`): In-memory virtual filesystem
|
|
102
|
+
|
|
103
|
+
### Adding Commands
|
|
104
|
+
|
|
105
|
+
1. **Write tests first** in `tests/test_commands/test_commands.py`
|
|
106
|
+
2. Run tests to see them fail
|
|
107
|
+
3. Create command in `src/just_bash/commands/<name>/<name>.py`
|
|
108
|
+
4. Add to registry in `src/just_bash/commands/registry.py`
|
|
109
|
+
5. Run tests to see them pass
|
|
110
|
+
|
|
111
|
+
Command implementation pattern:
|
|
112
|
+
```python
|
|
113
|
+
from ...types import CommandContext, ExecResult
|
|
114
|
+
|
|
115
|
+
class NewCommand:
|
|
116
|
+
"""The new_command."""
|
|
117
|
+
|
|
118
|
+
name = "new_command"
|
|
119
|
+
|
|
120
|
+
async def execute(self, args: list[str], ctx: CommandContext) -> ExecResult:
|
|
121
|
+
# Parse arguments
|
|
122
|
+
# Execute logic using ctx.fs, ctx.stdin, ctx.cwd, ctx.env
|
|
123
|
+
return ExecResult(stdout=output, stderr=errors, exit_code=code)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## File Locations
|
|
127
|
+
|
|
128
|
+
- Commands: `src/just_bash/commands/<name>/<name>.py`
|
|
129
|
+
- Command registry: `src/just_bash/commands/registry.py`
|
|
130
|
+
- Tests: `tests/test_commands/test_commands.py`
|
|
131
|
+
- Parser: `src/just_bash/parser/`
|
|
132
|
+
- Interpreter: `src/just_bash/interpreter/`
|
|
133
|
+
- Types: `src/just_bash/types.py`
|
|
134
|
+
|
|
135
|
+
## Development Guidelines
|
|
136
|
+
|
|
137
|
+
- **TDD first** - Write tests before implementation
|
|
138
|
+
- Match real bash behavior, not convenience
|
|
139
|
+
- Keep implementations simple and focused
|
|
140
|
+
- Use `ctx.fs` for all filesystem operations
|
|
141
|
+
- Handle errors gracefully with appropriate exit codes
|
|
142
|
+
- Verify with `pytest tests/ -v` before finishing
|
|
143
|
+
|
|
144
|
+
## Known Issues
|
|
145
|
+
|
|
146
|
+
1. **Single-quote variable expansion** - Variables like `$0` are expanded even in single quotes. Workaround: use `-f` to load scripts from files, or escape with `\$`.
|
just_bash-0.1.2/PKG-INFO
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: just-bash
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: A pure Python bash interpreter with in-memory virtual filesystem
|
|
5
|
+
Project-URL: Homepage, https://github.com/dbreunig/just-bash-py
|
|
6
|
+
Project-URL: Repository, https://github.com/dbreunig/just-bash-py
|
|
7
|
+
Author: Drew Breunig
|
|
8
|
+
License-Expression: Apache-2.0
|
|
9
|
+
Keywords: bash,interpreter,sandbox,shell,virtual-filesystem
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
18
|
+
Classifier: Typing :: Typed
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: aiofiles>=23.0
|
|
21
|
+
Requires-Dist: aiohttp>=3.9
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: mypy>=1.8; extra == 'dev'
|
|
24
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: ruff>=0.1; extra == 'dev'
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# just-bash-py (pre-release)
|
|
30
|
+
|
|
31
|
+
[](https://pypi.org/project/just-bash/)
|
|
32
|
+
[](https://www.python.org/downloads/)
|
|
33
|
+
[](LICENSE)
|
|
34
|
+
|
|
35
|
+
A pure Python bash interpreter with an in-memory virtual filesystem, designed for AI agents needing a secure, sandboxed bash environment.
|
|
36
|
+
|
|
37
|
+
This is a Python port of [just-bash](https://github.com/vercel-labs/just-bash), the emulated bash interpreter for TypeScript, from Vercel.
|
|
38
|
+
|
|
39
|
+
**This is a pre-release.** This as much a demonstration of coding agents' ability to implement software given a tight spec and high test coverage, as [discussed here](https://www.dbreunig.com/2026/01/08/a-software-library-with-no-code.html) and [here](https://github.com/dbreunig/whenwords).
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
- **Pure Python** - No external binaries, no WASM dependencies
|
|
44
|
+
- **In-memory filesystem** - Sandboxed virtual filesystem for safe execution
|
|
45
|
+
- **70+ commands** - grep, sed, awk, jq, curl, and more
|
|
46
|
+
- **Full bash syntax** - Pipes, redirections, variables, arrays, functions, control flow
|
|
47
|
+
- **32 shell builtins** - cd, export, declare, test, and more
|
|
48
|
+
- **Async execution** - Built on asyncio for non-blocking operation
|
|
49
|
+
- **Security limits** - Prevent infinite loops, excessive recursion, runaway execution
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install just-bash
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Quick Start
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from just_bash import Bash
|
|
61
|
+
|
|
62
|
+
bash = Bash()
|
|
63
|
+
|
|
64
|
+
# Simple command
|
|
65
|
+
result = bash.run('echo "Hello, World!"')
|
|
66
|
+
print(result.stdout) # Hello, World!
|
|
67
|
+
|
|
68
|
+
# Pipes and text processing
|
|
69
|
+
result = bash.run('echo "banana apple cherry" | tr " " "\\n" | sort')
|
|
70
|
+
print(result.stdout) # apple\nbanana\ncherry\n
|
|
71
|
+
|
|
72
|
+
# Variables and arithmetic
|
|
73
|
+
result = bash.run('x=5; echo $((x * 2))')
|
|
74
|
+
print(result.stdout) # 10
|
|
75
|
+
|
|
76
|
+
# Arrays
|
|
77
|
+
result = bash.run('arr=(a b c); echo "${arr[@]}"')
|
|
78
|
+
print(result.stdout) # a b c
|
|
79
|
+
|
|
80
|
+
# In-memory files
|
|
81
|
+
result = bash.run('echo "test" > /tmp/file.txt; cat /tmp/file.txt')
|
|
82
|
+
print(result.stdout) # test
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For async contexts, use `await bash.exec()` instead of `bash.run()`.
|
|
86
|
+
|
|
87
|
+
## Demo
|
|
88
|
+
|
|
89
|
+
Run the interactive demo to see all features in action:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
python examples/demo.py
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This demonstrates variables, arrays, control flow, pipes, text processing, JSON handling with jq, functions, and more.
|
|
96
|
+
|
|
97
|
+
## API
|
|
98
|
+
|
|
99
|
+
### Bash Class
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from just_bash import Bash
|
|
103
|
+
|
|
104
|
+
# Create with optional initial files
|
|
105
|
+
bash = Bash(files={
|
|
106
|
+
"/data/input.txt": "line1\nline2\nline3\n",
|
|
107
|
+
"/config.json": '{"key": "value"}'
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
# Execute commands
|
|
111
|
+
result = await bash.exec("cat /data/input.txt | wc -l")
|
|
112
|
+
|
|
113
|
+
# Result object
|
|
114
|
+
print(result.stdout) # Standard output
|
|
115
|
+
print(result.stderr) # Standard error
|
|
116
|
+
print(result.exit_code) # Exit code (0 = success)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Configuration Options
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
bash = Bash(
|
|
123
|
+
files={...}, # Initial filesystem contents
|
|
124
|
+
env={...}, # Environment variables
|
|
125
|
+
cwd="/home/user", # Working directory
|
|
126
|
+
network_enabled=False, # Enable/disable network (curl)
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Security
|
|
131
|
+
|
|
132
|
+
- **No native execution** - All commands are pure Python implementations
|
|
133
|
+
- **Network disabled by default** - curl requires explicit enablement
|
|
134
|
+
- **Execution limits** - Prevents infinite loops and excessive resource usage
|
|
135
|
+
- **Filesystem isolation** - Virtual filesystem keeps host system safe
|
|
136
|
+
- **SQLite sandboxed** - Only in-memory databases allowed
|
|
137
|
+
|
|
138
|
+
## Supported Features
|
|
139
|
+
|
|
140
|
+
### Shell Syntax
|
|
141
|
+
- Variables: `$VAR`, `${VAR}`, `${VAR:-default}`, `${VAR:+alt}`, `${#VAR}`
|
|
142
|
+
- Arrays: `arr=(a b c)`, `${arr[0]}`, `${arr[@]}`, `${#arr[@]}`
|
|
143
|
+
- Arithmetic: `$((expr))`, `((expr))`, increment/decrement, ternary
|
|
144
|
+
- Quoting: Single quotes, double quotes, `$'...'`, escapes
|
|
145
|
+
- Expansion: Brace `{a,b}`, tilde `~`, glob `*.txt`, command `$(cmd)`
|
|
146
|
+
- Control flow: `if/then/else/fi`, `for/do/done`, `while`, `until`, `case`
|
|
147
|
+
- Functions: `func() { ... }`, local variables, return values
|
|
148
|
+
- Pipes: `cmd1 | cmd2 | cmd3`
|
|
149
|
+
- Redirections: `>`, `>>`, `<`, `2>&1`, here-docs
|
|
150
|
+
|
|
151
|
+
### Parameter Expansion
|
|
152
|
+
- Default values: `${var:-default}`, `${var:=default}`
|
|
153
|
+
- Substring: `${var:offset:length}`
|
|
154
|
+
- Pattern removal: `${var#pattern}`, `${var##pattern}`, `${var%pattern}`, `${var%%pattern}`
|
|
155
|
+
- Replacement: `${var/pattern/string}`, `${var//pattern/string}`
|
|
156
|
+
- Case modification: `${var^^}`, `${var,,}`, `${var^}`, `${var,}`
|
|
157
|
+
- Length: `${#var}`, `${#arr[@]}`
|
|
158
|
+
- Indirection: `${!var}`, `${!prefix*}`, `${!arr[@]}`
|
|
159
|
+
- Transforms: `${var@Q}`, `${var@a}`, `${var@A}`
|
|
160
|
+
|
|
161
|
+
### Conditionals
|
|
162
|
+
- Test command: `[ -f file ]`, `[ "$a" = "$b" ]`
|
|
163
|
+
- Extended test: `[[ $var == pattern ]]`, `[[ $var =~ regex ]]`
|
|
164
|
+
- Arithmetic test: `(( x > 5 ))`
|
|
165
|
+
- File tests: `-e`, `-f`, `-d`, `-r`, `-w`, `-x`, `-s`, `-L`
|
|
166
|
+
- String tests: `-z`, `-n`, `=`, `!=`, `<`, `>`
|
|
167
|
+
- Numeric tests: `-eq`, `-ne`, `-lt`, `-le`, `-gt`, `-ge`
|
|
168
|
+
|
|
169
|
+
## Shell Builtins
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
: . [ alias break builtin cd command
|
|
173
|
+
continue declare eval exec exit export false let
|
|
174
|
+
local mapfile readarray readonly return set shift shopt
|
|
175
|
+
source test true type typeset unalias unset wait
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Available Commands
|
|
179
|
+
|
|
180
|
+
### File Operations
|
|
181
|
+
```
|
|
182
|
+
cat chmod cp find ln ls mkdir mv
|
|
183
|
+
rm stat touch tree
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Text Processing
|
|
187
|
+
```
|
|
188
|
+
awk column comm cut diff expand fold grep
|
|
189
|
+
egrep fgrep head join nl od paste rev
|
|
190
|
+
rg sed sort split strings tac tail tee
|
|
191
|
+
tr unexpand uniq wc
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Data Processing
|
|
195
|
+
```
|
|
196
|
+
jq yq xan sqlite3
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Path Utilities
|
|
200
|
+
```
|
|
201
|
+
basename dirname pwd readlink which
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Compression & Encoding
|
|
205
|
+
```
|
|
206
|
+
base64 gzip gunzip zcat md5sum sha1sum sha256sum tar
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### System & Environment
|
|
210
|
+
```
|
|
211
|
+
alias clear date du echo env expr false
|
|
212
|
+
file help history hostname printenv printf read seq
|
|
213
|
+
sleep timeout true unalias xargs
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Network
|
|
217
|
+
```
|
|
218
|
+
curl (disabled by default)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Shell
|
|
222
|
+
```
|
|
223
|
+
bash sh
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## License
|
|
227
|
+
|
|
228
|
+
Apache 2.0
|
|
229
|
+
|
|
230
|
+
## Acknowledgments
|
|
231
|
+
|
|
232
|
+
This project is a Python port of [just-bash](https://github.com/vercel-labs/just-bash) by Vercel. The TypeScript implementation provided the design patterns, test cases, and feature specifications that guided this Python implementation.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# just-bash-py (pre-release)
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/just-bash/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
A pure Python bash interpreter with an in-memory virtual filesystem, designed for AI agents needing a secure, sandboxed bash environment.
|
|
8
|
+
|
|
9
|
+
This is a Python port of [just-bash](https://github.com/vercel-labs/just-bash), the emulated bash interpreter for TypeScript, from Vercel.
|
|
10
|
+
|
|
11
|
+
**This is a pre-release.** This as much a demonstration of coding agents' ability to implement software given a tight spec and high test coverage, as [discussed here](https://www.dbreunig.com/2026/01/08/a-software-library-with-no-code.html) and [here](https://github.com/dbreunig/whenwords).
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **Pure Python** - No external binaries, no WASM dependencies
|
|
16
|
+
- **In-memory filesystem** - Sandboxed virtual filesystem for safe execution
|
|
17
|
+
- **70+ commands** - grep, sed, awk, jq, curl, and more
|
|
18
|
+
- **Full bash syntax** - Pipes, redirections, variables, arrays, functions, control flow
|
|
19
|
+
- **32 shell builtins** - cd, export, declare, test, and more
|
|
20
|
+
- **Async execution** - Built on asyncio for non-blocking operation
|
|
21
|
+
- **Security limits** - Prevent infinite loops, excessive recursion, runaway execution
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install just-bash
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
from just_bash import Bash
|
|
33
|
+
|
|
34
|
+
bash = Bash()
|
|
35
|
+
|
|
36
|
+
# Simple command
|
|
37
|
+
result = bash.run('echo "Hello, World!"')
|
|
38
|
+
print(result.stdout) # Hello, World!
|
|
39
|
+
|
|
40
|
+
# Pipes and text processing
|
|
41
|
+
result = bash.run('echo "banana apple cherry" | tr " " "\\n" | sort')
|
|
42
|
+
print(result.stdout) # apple\nbanana\ncherry\n
|
|
43
|
+
|
|
44
|
+
# Variables and arithmetic
|
|
45
|
+
result = bash.run('x=5; echo $((x * 2))')
|
|
46
|
+
print(result.stdout) # 10
|
|
47
|
+
|
|
48
|
+
# Arrays
|
|
49
|
+
result = bash.run('arr=(a b c); echo "${arr[@]}"')
|
|
50
|
+
print(result.stdout) # a b c
|
|
51
|
+
|
|
52
|
+
# In-memory files
|
|
53
|
+
result = bash.run('echo "test" > /tmp/file.txt; cat /tmp/file.txt')
|
|
54
|
+
print(result.stdout) # test
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For async contexts, use `await bash.exec()` instead of `bash.run()`.
|
|
58
|
+
|
|
59
|
+
## Demo
|
|
60
|
+
|
|
61
|
+
Run the interactive demo to see all features in action:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python examples/demo.py
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This demonstrates variables, arrays, control flow, pipes, text processing, JSON handling with jq, functions, and more.
|
|
68
|
+
|
|
69
|
+
## API
|
|
70
|
+
|
|
71
|
+
### Bash Class
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from just_bash import Bash
|
|
75
|
+
|
|
76
|
+
# Create with optional initial files
|
|
77
|
+
bash = Bash(files={
|
|
78
|
+
"/data/input.txt": "line1\nline2\nline3\n",
|
|
79
|
+
"/config.json": '{"key": "value"}'
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
# Execute commands
|
|
83
|
+
result = await bash.exec("cat /data/input.txt | wc -l")
|
|
84
|
+
|
|
85
|
+
# Result object
|
|
86
|
+
print(result.stdout) # Standard output
|
|
87
|
+
print(result.stderr) # Standard error
|
|
88
|
+
print(result.exit_code) # Exit code (0 = success)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Configuration Options
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
bash = Bash(
|
|
95
|
+
files={...}, # Initial filesystem contents
|
|
96
|
+
env={...}, # Environment variables
|
|
97
|
+
cwd="/home/user", # Working directory
|
|
98
|
+
network_enabled=False, # Enable/disable network (curl)
|
|
99
|
+
)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Security
|
|
103
|
+
|
|
104
|
+
- **No native execution** - All commands are pure Python implementations
|
|
105
|
+
- **Network disabled by default** - curl requires explicit enablement
|
|
106
|
+
- **Execution limits** - Prevents infinite loops and excessive resource usage
|
|
107
|
+
- **Filesystem isolation** - Virtual filesystem keeps host system safe
|
|
108
|
+
- **SQLite sandboxed** - Only in-memory databases allowed
|
|
109
|
+
|
|
110
|
+
## Supported Features
|
|
111
|
+
|
|
112
|
+
### Shell Syntax
|
|
113
|
+
- Variables: `$VAR`, `${VAR}`, `${VAR:-default}`, `${VAR:+alt}`, `${#VAR}`
|
|
114
|
+
- Arrays: `arr=(a b c)`, `${arr[0]}`, `${arr[@]}`, `${#arr[@]}`
|
|
115
|
+
- Arithmetic: `$((expr))`, `((expr))`, increment/decrement, ternary
|
|
116
|
+
- Quoting: Single quotes, double quotes, `$'...'`, escapes
|
|
117
|
+
- Expansion: Brace `{a,b}`, tilde `~`, glob `*.txt`, command `$(cmd)`
|
|
118
|
+
- Control flow: `if/then/else/fi`, `for/do/done`, `while`, `until`, `case`
|
|
119
|
+
- Functions: `func() { ... }`, local variables, return values
|
|
120
|
+
- Pipes: `cmd1 | cmd2 | cmd3`
|
|
121
|
+
- Redirections: `>`, `>>`, `<`, `2>&1`, here-docs
|
|
122
|
+
|
|
123
|
+
### Parameter Expansion
|
|
124
|
+
- Default values: `${var:-default}`, `${var:=default}`
|
|
125
|
+
- Substring: `${var:offset:length}`
|
|
126
|
+
- Pattern removal: `${var#pattern}`, `${var##pattern}`, `${var%pattern}`, `${var%%pattern}`
|
|
127
|
+
- Replacement: `${var/pattern/string}`, `${var//pattern/string}`
|
|
128
|
+
- Case modification: `${var^^}`, `${var,,}`, `${var^}`, `${var,}`
|
|
129
|
+
- Length: `${#var}`, `${#arr[@]}`
|
|
130
|
+
- Indirection: `${!var}`, `${!prefix*}`, `${!arr[@]}`
|
|
131
|
+
- Transforms: `${var@Q}`, `${var@a}`, `${var@A}`
|
|
132
|
+
|
|
133
|
+
### Conditionals
|
|
134
|
+
- Test command: `[ -f file ]`, `[ "$a" = "$b" ]`
|
|
135
|
+
- Extended test: `[[ $var == pattern ]]`, `[[ $var =~ regex ]]`
|
|
136
|
+
- Arithmetic test: `(( x > 5 ))`
|
|
137
|
+
- File tests: `-e`, `-f`, `-d`, `-r`, `-w`, `-x`, `-s`, `-L`
|
|
138
|
+
- String tests: `-z`, `-n`, `=`, `!=`, `<`, `>`
|
|
139
|
+
- Numeric tests: `-eq`, `-ne`, `-lt`, `-le`, `-gt`, `-ge`
|
|
140
|
+
|
|
141
|
+
## Shell Builtins
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
: . [ alias break builtin cd command
|
|
145
|
+
continue declare eval exec exit export false let
|
|
146
|
+
local mapfile readarray readonly return set shift shopt
|
|
147
|
+
source test true type typeset unalias unset wait
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Available Commands
|
|
151
|
+
|
|
152
|
+
### File Operations
|
|
153
|
+
```
|
|
154
|
+
cat chmod cp find ln ls mkdir mv
|
|
155
|
+
rm stat touch tree
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Text Processing
|
|
159
|
+
```
|
|
160
|
+
awk column comm cut diff expand fold grep
|
|
161
|
+
egrep fgrep head join nl od paste rev
|
|
162
|
+
rg sed sort split strings tac tail tee
|
|
163
|
+
tr unexpand uniq wc
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Data Processing
|
|
167
|
+
```
|
|
168
|
+
jq yq xan sqlite3
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Path Utilities
|
|
172
|
+
```
|
|
173
|
+
basename dirname pwd readlink which
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Compression & Encoding
|
|
177
|
+
```
|
|
178
|
+
base64 gzip gunzip zcat md5sum sha1sum sha256sum tar
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### System & Environment
|
|
182
|
+
```
|
|
183
|
+
alias clear date du echo env expr false
|
|
184
|
+
file help history hostname printenv printf read seq
|
|
185
|
+
sleep timeout true unalias xargs
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Network
|
|
189
|
+
```
|
|
190
|
+
curl (disabled by default)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Shell
|
|
194
|
+
```
|
|
195
|
+
bash sh
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## License
|
|
199
|
+
|
|
200
|
+
Apache 2.0
|
|
201
|
+
|
|
202
|
+
## Acknowledgments
|
|
203
|
+
|
|
204
|
+
This project is a Python port of [just-bash](https://github.com/vercel-labs/just-bash) by Vercel. The TypeScript implementation provided the design patterns, test cases, and feature specifications that guided this Python implementation.
|