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.
Files changed (1101) hide show
  1. just_bash-0.1.2/.gitignore +99 -0
  2. just_bash-0.1.2/CLAUDE.md +146 -0
  3. just_bash-0.1.2/PKG-INFO +232 -0
  4. just_bash-0.1.2/README.md +204 -0
  5. just_bash-0.1.2/examples/demo.py +306 -0
  6. just_bash-0.1.2/examples/text_processing_demo.py +483 -0
  7. just_bash-0.1.2/just-bash/.github/workflows/comparison-tests.yml +37 -0
  8. just_bash-0.1.2/just-bash/.github/workflows/lint.yml +30 -0
  9. just_bash-0.1.2/just-bash/.github/workflows/typecheck.yml +38 -0
  10. just_bash-0.1.2/just-bash/.github/workflows/unit-tests.yml +33 -0
  11. just_bash-0.1.2/just-bash/.gitignore +16 -0
  12. just_bash-0.1.2/just-bash/.npmignore +24 -0
  13. just_bash-0.1.2/just-bash/AGENTS.md +40 -0
  14. just_bash-0.1.2/just-bash/AGENTS.npm.md +300 -0
  15. just_bash-0.1.2/just-bash/CLAUDE.md +188 -0
  16. just_bash-0.1.2/just-bash/LICENSE +201 -0
  17. just_bash-0.1.2/just-bash/README.md +440 -0
  18. just_bash-0.1.2/just-bash/biome.json +41 -0
  19. just_bash-0.1.2/just-bash/examples/bash-agent/.gitignore +3 -0
  20. just_bash-0.1.2/just-bash/examples/bash-agent/README.md +56 -0
  21. just_bash-0.1.2/just-bash/examples/bash-agent/agent.ts +105 -0
  22. just_bash-0.1.2/just-bash/examples/bash-agent/main.ts +42 -0
  23. just_bash-0.1.2/just-bash/examples/bash-agent/package.json +16 -0
  24. just_bash-0.1.2/just-bash/examples/bash-agent/pnpm-lock.yaml +600 -0
  25. just_bash-0.1.2/just-bash/examples/bash-agent/shell.ts +74 -0
  26. just_bash-0.1.2/just-bash/examples/bash-agent/tsconfig.json +13 -0
  27. just_bash-0.1.2/just-bash/examples/custom-command/README.md +80 -0
  28. just_bash-0.1.2/just-bash/examples/custom-command/commands.ts +290 -0
  29. just_bash-0.1.2/just-bash/examples/custom-command/main.ts +105 -0
  30. just_bash-0.1.2/just-bash/examples/custom-command/package.json +16 -0
  31. just_bash-0.1.2/just-bash/examples/custom-command/pnpm-lock.yaml +753 -0
  32. just_bash-0.1.2/just-bash/examples/custom-command/tsconfig.json +14 -0
  33. just_bash-0.1.2/just-bash/knip.json +13 -0
  34. just_bash-0.1.2/just-bash/package.json +107 -0
  35. just_bash-0.1.2/just-bash/pnpm-lock.yaml +1864 -0
  36. just_bash-0.1.2/just-bash/src/Bash.commands.test.ts +85 -0
  37. just_bash-0.1.2/just-bash/src/Bash.exec-options.test.ts +806 -0
  38. just_bash-0.1.2/just-bash/src/Bash.general.test.ts +632 -0
  39. just_bash-0.1.2/just-bash/src/Bash.ts +451 -0
  40. just_bash-0.1.2/just-bash/src/agent-examples/bug-investigation.test.ts +268 -0
  41. just_bash-0.1.2/just-bash/src/agent-examples/code-review.test.ts +129 -0
  42. just_bash-0.1.2/just-bash/src/agent-examples/codebase-exploration.test.ts +330 -0
  43. just_bash-0.1.2/just-bash/src/agent-examples/config-analysis.test.ts +249 -0
  44. just_bash-0.1.2/just-bash/src/agent-examples/debugging-workflow.test.ts +491 -0
  45. just_bash-0.1.2/just-bash/src/agent-examples/dependency-analysis.test.ts +358 -0
  46. just_bash-0.1.2/just-bash/src/agent-examples/feature-implementation.test.ts +617 -0
  47. just_bash-0.1.2/just-bash/src/agent-examples/log-analysis.test.ts +282 -0
  48. just_bash-0.1.2/just-bash/src/agent-examples/multi-file-migration.test.ts +335 -0
  49. just_bash-0.1.2/just-bash/src/agent-examples/refactoring-workflow.test.ts +416 -0
  50. just_bash-0.1.2/just-bash/src/agent-examples/security-audit.test.ts +434 -0
  51. just_bash-0.1.2/just-bash/src/agent-examples/text-processing-workflows.test.ts +945 -0
  52. just_bash-0.1.2/just-bash/src/ast/types.ts +963 -0
  53. just_bash-0.1.2/just-bash/src/browser.bundle.test.ts +204 -0
  54. just_bash-0.1.2/just-bash/src/browser.ts +54 -0
  55. just_bash-0.1.2/just-bash/src/cli/exec.ts +127 -0
  56. just_bash-0.1.2/just-bash/src/cli/just-bash.bundle.test.ts +106 -0
  57. just_bash-0.1.2/just-bash/src/cli/just-bash.test.ts +348 -0
  58. just_bash-0.1.2/just-bash/src/cli/just-bash.ts +329 -0
  59. just_bash-0.1.2/just-bash/src/cli/shell.test.ts +205 -0
  60. just_bash-0.1.2/just-bash/src/cli/shell.ts +245 -0
  61. just_bash-0.1.2/just-bash/src/commands/alias/alias.test.ts +91 -0
  62. just_bash-0.1.2/just-bash/src/commands/alias/alias.ts +121 -0
  63. just_bash-0.1.2/just-bash/src/commands/awk/ast.ts +292 -0
  64. just_bash-0.1.2/just-bash/src/commands/awk/awk.arrays.test.ts +315 -0
  65. just_bash-0.1.2/just-bash/src/commands/awk/awk.binary.test.ts +25 -0
  66. just_bash-0.1.2/just-bash/src/commands/awk/awk.edge-cases.test.ts +426 -0
  67. just_bash-0.1.2/just-bash/src/commands/awk/awk.expressions.test.ts +512 -0
  68. just_bash-0.1.2/just-bash/src/commands/awk/awk.fields.test.ts +411 -0
  69. just_bash-0.1.2/just-bash/src/commands/awk/awk.functions.test.ts +556 -0
  70. just_bash-0.1.2/just-bash/src/commands/awk/awk.getline.test.ts +214 -0
  71. just_bash-0.1.2/just-bash/src/commands/awk/awk.limits.test.ts +129 -0
  72. just_bash-0.1.2/just-bash/src/commands/awk/awk.math.test.ts +107 -0
  73. just_bash-0.1.2/just-bash/src/commands/awk/awk.modulo.test.ts +120 -0
  74. just_bash-0.1.2/just-bash/src/commands/awk/awk.nextfile.test.ts +107 -0
  75. just_bash-0.1.2/just-bash/src/commands/awk/awk.operators.test.ts +474 -0
  76. just_bash-0.1.2/just-bash/src/commands/awk/awk.output.test.ts +137 -0
  77. just_bash-0.1.2/just-bash/src/commands/awk/awk.parsing.test.ts +436 -0
  78. just_bash-0.1.2/just-bash/src/commands/awk/awk.patterns.test.ts +252 -0
  79. just_bash-0.1.2/just-bash/src/commands/awk/awk.range.test.ts +116 -0
  80. just_bash-0.1.2/just-bash/src/commands/awk/awk.strings.test.ts +473 -0
  81. just_bash-0.1.2/just-bash/src/commands/awk/awk.ternary.test.ts +177 -0
  82. just_bash-0.1.2/just-bash/src/commands/awk/awk.test.ts +623 -0
  83. just_bash-0.1.2/just-bash/src/commands/awk/awk2.ts +245 -0
  84. just_bash-0.1.2/just-bash/src/commands/awk/builtins.ts +809 -0
  85. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/context.ts +137 -0
  86. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/expressions.ts +630 -0
  87. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/fields.ts +85 -0
  88. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/helpers.ts +59 -0
  89. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/index.ts +13 -0
  90. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/interpreter.ts +182 -0
  91. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/statements.ts +369 -0
  92. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/types.ts +15 -0
  93. just_bash-0.1.2/just-bash/src/commands/awk/interpreter/variables.ts +161 -0
  94. just_bash-0.1.2/just-bash/src/commands/awk/lexer.ts +823 -0
  95. just_bash-0.1.2/just-bash/src/commands/awk/parser2.ts +1161 -0
  96. just_bash-0.1.2/just-bash/src/commands/base64/base64.binary.test.ts +134 -0
  97. just_bash-0.1.2/just-bash/src/commands/base64/base64.test.ts +194 -0
  98. just_bash-0.1.2/just-bash/src/commands/base64/base64.ts +123 -0
  99. just_bash-0.1.2/just-bash/src/commands/basename/basename.test.ts +58 -0
  100. just_bash-0.1.2/just-bash/src/commands/basename/basename.ts +72 -0
  101. just_bash-0.1.2/just-bash/src/commands/bash/bash.test.ts +203 -0
  102. just_bash-0.1.2/just-bash/src/commands/bash/bash.ts +159 -0
  103. just_bash-0.1.2/just-bash/src/commands/browser-excluded.ts +24 -0
  104. just_bash-0.1.2/just-bash/src/commands/cat/cat.binary.test.ts +53 -0
  105. just_bash-0.1.2/just-bash/src/commands/cat/cat.test.ts +171 -0
  106. just_bash-0.1.2/just-bash/src/commands/cat/cat.ts +77 -0
  107. just_bash-0.1.2/just-bash/src/commands/chmod/chmod.test.ts +141 -0
  108. just_bash-0.1.2/just-bash/src/commands/chmod/chmod.ts +193 -0
  109. just_bash-0.1.2/just-bash/src/commands/clear/clear.test.ts +19 -0
  110. just_bash-0.1.2/just-bash/src/commands/clear/clear.ts +24 -0
  111. just_bash-0.1.2/just-bash/src/commands/column/column.test.ts +194 -0
  112. just_bash-0.1.2/just-bash/src/commands/column/column.ts +242 -0
  113. just_bash-0.1.2/just-bash/src/commands/comm/comm.test.ts +140 -0
  114. just_bash-0.1.2/just-bash/src/commands/comm/comm.ts +161 -0
  115. just_bash-0.1.2/just-bash/src/commands/cp/cp.binary.test.ts +23 -0
  116. just_bash-0.1.2/just-bash/src/commands/cp/cp.test.ts +149 -0
  117. just_bash-0.1.2/just-bash/src/commands/cp/cp.ts +132 -0
  118. just_bash-0.1.2/just-bash/src/commands/curl/curl.ts +287 -0
  119. just_bash-0.1.2/just-bash/src/commands/curl/form.ts +96 -0
  120. just_bash-0.1.2/just-bash/src/commands/curl/help.ts +46 -0
  121. just_bash-0.1.2/just-bash/src/commands/curl/parse.ts +254 -0
  122. just_bash-0.1.2/just-bash/src/commands/curl/tests/allowlist.test.ts +114 -0
  123. just_bash-0.1.2/just-bash/src/commands/curl/tests/auth.test.ts +113 -0
  124. just_bash-0.1.2/just-bash/src/commands/curl/tests/availability.test.ts +81 -0
  125. just_bash-0.1.2/just-bash/src/commands/curl/tests/binary.test.ts +174 -0
  126. just_bash-0.1.2/just-bash/src/commands/curl/tests/cookies.test.ts +123 -0
  127. just_bash-0.1.2/just-bash/src/commands/curl/tests/form.test.ts +183 -0
  128. just_bash-0.1.2/just-bash/src/commands/curl/tests/methods.test.ts +250 -0
  129. just_bash-0.1.2/just-bash/src/commands/curl/tests/options.test.ts +277 -0
  130. just_bash-0.1.2/just-bash/src/commands/curl/tests/timeout.test.ts +130 -0
  131. just_bash-0.1.2/just-bash/src/commands/curl/tests/upload.test.ts +119 -0
  132. just_bash-0.1.2/just-bash/src/commands/curl/types.ts +33 -0
  133. just_bash-0.1.2/just-bash/src/commands/curl/utils.ts +50 -0
  134. just_bash-0.1.2/just-bash/src/commands/cut/cut.binary.test.ts +23 -0
  135. just_bash-0.1.2/just-bash/src/commands/cut/cut.test.ts +110 -0
  136. just_bash-0.1.2/just-bash/src/commands/cut/cut.ts +163 -0
  137. just_bash-0.1.2/just-bash/src/commands/date/date.test.ts +266 -0
  138. just_bash-0.1.2/just-bash/src/commands/date/date.ts +215 -0
  139. just_bash-0.1.2/just-bash/src/commands/diff/diff.binary.test.ts +75 -0
  140. just_bash-0.1.2/just-bash/src/commands/diff/diff.test.ts +294 -0
  141. just_bash-0.1.2/just-bash/src/commands/diff/diff.ts +114 -0
  142. just_bash-0.1.2/just-bash/src/commands/dirname/dirname.test.ts +44 -0
  143. just_bash-0.1.2/just-bash/src/commands/dirname/dirname.ts +49 -0
  144. just_bash-0.1.2/just-bash/src/commands/du/du.test.ts +116 -0
  145. just_bash-0.1.2/just-bash/src/commands/du/du.ts +276 -0
  146. just_bash-0.1.2/just-bash/src/commands/echo/echo.binary.test.ts +80 -0
  147. just_bash-0.1.2/just-bash/src/commands/echo/echo.test.ts +101 -0
  148. just_bash-0.1.2/just-bash/src/commands/echo/echo.ts +218 -0
  149. just_bash-0.1.2/just-bash/src/commands/expand/expand.test.ts +188 -0
  150. just_bash-0.1.2/just-bash/src/commands/expand/expand.ts +241 -0
  151. just_bash-0.1.2/just-bash/src/commands/expand/unexpand.test.ts +177 -0
  152. just_bash-0.1.2/just-bash/src/commands/expand/unexpand.ts +283 -0
  153. just_bash-0.1.2/just-bash/src/commands/expr/expr.ts +247 -0
  154. just_bash-0.1.2/just-bash/src/commands/file/file.test.ts +269 -0
  155. just_bash-0.1.2/just-bash/src/commands/file/file.ts +462 -0
  156. just_bash-0.1.2/just-bash/src/commands/find/find.actions.test.ts +204 -0
  157. just_bash-0.1.2/just-bash/src/commands/find/find.basic.test.ts +311 -0
  158. just_bash-0.1.2/just-bash/src/commands/find/find.depth.test.ts +154 -0
  159. just_bash-0.1.2/just-bash/src/commands/find/find.exec.test.ts +159 -0
  160. just_bash-0.1.2/just-bash/src/commands/find/find.operators.test.ts +340 -0
  161. just_bash-0.1.2/just-bash/src/commands/find/find.patterns.test.ts +293 -0
  162. just_bash-0.1.2/just-bash/src/commands/find/find.perf.test.ts +1541 -0
  163. just_bash-0.1.2/just-bash/src/commands/find/find.perm.test.ts +83 -0
  164. just_bash-0.1.2/just-bash/src/commands/find/find.predicates.test.ts +216 -0
  165. just_bash-0.1.2/just-bash/src/commands/find/find.printf.test.ts +519 -0
  166. just_bash-0.1.2/just-bash/src/commands/find/find.ts +1154 -0
  167. just_bash-0.1.2/just-bash/src/commands/find/matcher.ts +794 -0
  168. just_bash-0.1.2/just-bash/src/commands/find/parser.ts +318 -0
  169. just_bash-0.1.2/just-bash/src/commands/find/types.ts +67 -0
  170. just_bash-0.1.2/just-bash/src/commands/fold/fold.test.ts +181 -0
  171. just_bash-0.1.2/just-bash/src/commands/fold/fold.ts +269 -0
  172. just_bash-0.1.2/just-bash/src/commands/grep/grep.advanced.test.ts +505 -0
  173. just_bash-0.1.2/just-bash/src/commands/grep/grep.basic.test.ts +496 -0
  174. just_bash-0.1.2/just-bash/src/commands/grep/grep.binary.test.ts +50 -0
  175. just_bash-0.1.2/just-bash/src/commands/grep/grep.exclude.test.ts +173 -0
  176. just_bash-0.1.2/just-bash/src/commands/grep/grep.ts +670 -0
  177. just_bash-0.1.2/just-bash/src/commands/gzip/gzip.binary.test.ts +177 -0
  178. just_bash-0.1.2/just-bash/src/commands/gzip/gzip.test.ts +402 -0
  179. just_bash-0.1.2/just-bash/src/commands/gzip/gzip.ts +792 -0
  180. just_bash-0.1.2/just-bash/src/commands/head/head-tail-shared.ts +240 -0
  181. just_bash-0.1.2/just-bash/src/commands/head/head.binary.test.ts +38 -0
  182. just_bash-0.1.2/just-bash/src/commands/head/head.test.ts +106 -0
  183. just_bash-0.1.2/just-bash/src/commands/head/head.ts +41 -0
  184. just_bash-0.1.2/just-bash/src/commands/help/help.test.ts +74 -0
  185. just_bash-0.1.2/just-bash/src/commands/help/help.ts +122 -0
  186. just_bash-0.1.2/just-bash/src/commands/help.ts +65 -0
  187. just_bash-0.1.2/just-bash/src/commands/history/history.test.ts +47 -0
  188. just_bash-0.1.2/just-bash/src/commands/history/history.ts +56 -0
  189. just_bash-0.1.2/just-bash/src/commands/hostname/hostname.test.ts +18 -0
  190. just_bash-0.1.2/just-bash/src/commands/hostname/hostname.ts +22 -0
  191. just_bash-0.1.2/just-bash/src/commands/html-to-markdown/html-to-markdown.test.ts +291 -0
  192. just_bash-0.1.2/just-bash/src/commands/html-to-markdown/html-to-markdown.ts +144 -0
  193. just_bash-0.1.2/just-bash/src/commands/join/join.test.ts +312 -0
  194. just_bash-0.1.2/just-bash/src/commands/join/join.ts +372 -0
  195. just_bash-0.1.2/just-bash/src/commands/jq/jq.basic.test.ts +176 -0
  196. just_bash-0.1.2/just-bash/src/commands/jq/jq.construction.test.ts +54 -0
  197. just_bash-0.1.2/just-bash/src/commands/jq/jq.filters.test.ts +152 -0
  198. just_bash-0.1.2/just-bash/src/commands/jq/jq.functions.test.ts +285 -0
  199. just_bash-0.1.2/just-bash/src/commands/jq/jq.limits.test.ts +98 -0
  200. just_bash-0.1.2/just-bash/src/commands/jq/jq.operators.test.ts +178 -0
  201. just_bash-0.1.2/just-bash/src/commands/jq/jq.strings.test.ts +108 -0
  202. just_bash-0.1.2/just-bash/src/commands/jq/jq.test.ts +392 -0
  203. just_bash-0.1.2/just-bash/src/commands/jq/jq.ts +348 -0
  204. just_bash-0.1.2/just-bash/src/commands/ln/ln.test.ts +161 -0
  205. just_bash-0.1.2/just-bash/src/commands/ln/ln.ts +131 -0
  206. just_bash-0.1.2/just-bash/src/commands/ls/ls.human.test.ts +89 -0
  207. just_bash-0.1.2/just-bash/src/commands/ls/ls.test.ts +252 -0
  208. just_bash-0.1.2/just-bash/src/commands/ls/ls.ts +513 -0
  209. just_bash-0.1.2/just-bash/src/commands/md5sum/checksum.binary.test.ts +205 -0
  210. just_bash-0.1.2/just-bash/src/commands/md5sum/checksum.ts +235 -0
  211. just_bash-0.1.2/just-bash/src/commands/md5sum/md5sum.test.ts +187 -0
  212. just_bash-0.1.2/just-bash/src/commands/md5sum/md5sum.ts +8 -0
  213. just_bash-0.1.2/just-bash/src/commands/md5sum/sha1sum.ts +8 -0
  214. just_bash-0.1.2/just-bash/src/commands/md5sum/sha256sum.ts +8 -0
  215. just_bash-0.1.2/just-bash/src/commands/mkdir/mkdir.test.ts +103 -0
  216. just_bash-0.1.2/just-bash/src/commands/mkdir/mkdir.ts +58 -0
  217. just_bash-0.1.2/just-bash/src/commands/mv/mv.test.ts +242 -0
  218. just_bash-0.1.2/just-bash/src/commands/mv/mv.ts +125 -0
  219. just_bash-0.1.2/just-bash/src/commands/nl/nl.test.ts +214 -0
  220. just_bash-0.1.2/just-bash/src/commands/nl/nl.ts +309 -0
  221. just_bash-0.1.2/just-bash/src/commands/od/od.binary.test.ts +83 -0
  222. just_bash-0.1.2/just-bash/src/commands/od/od.test.ts +51 -0
  223. just_bash-0.1.2/just-bash/src/commands/od/od.ts +93 -0
  224. just_bash-0.1.2/just-bash/src/commands/paste/paste.test.ts +213 -0
  225. just_bash-0.1.2/just-bash/src/commands/paste/paste.ts +145 -0
  226. just_bash-0.1.2/just-bash/src/commands/printf/escapes.test.ts +192 -0
  227. just_bash-0.1.2/just-bash/src/commands/printf/escapes.ts +215 -0
  228. just_bash-0.1.2/just-bash/src/commands/printf/printf.binary.test.ts +94 -0
  229. just_bash-0.1.2/just-bash/src/commands/printf/printf.test.ts +181 -0
  230. just_bash-0.1.2/just-bash/src/commands/printf/printf.ts +890 -0
  231. just_bash-0.1.2/just-bash/src/commands/pwd/pwd.test.ts +60 -0
  232. just_bash-0.1.2/just-bash/src/commands/pwd/pwd.ts +13 -0
  233. just_bash-0.1.2/just-bash/src/commands/query-engine/evaluator.ts +2114 -0
  234. just_bash-0.1.2/just-bash/src/commands/query-engine/index.ts +9 -0
  235. just_bash-0.1.2/just-bash/src/commands/query-engine/parser.ts +1104 -0
  236. just_bash-0.1.2/just-bash/src/commands/readlink/readlink.test.ts +118 -0
  237. just_bash-0.1.2/just-bash/src/commands/readlink/readlink.ts +102 -0
  238. just_bash-0.1.2/just-bash/src/commands/registry.test.ts +77 -0
  239. just_bash-0.1.2/just-bash/src/commands/registry.ts +546 -0
  240. just_bash-0.1.2/just-bash/src/commands/rev/rev.test.ts +144 -0
  241. just_bash-0.1.2/just-bash/src/commands/rev/rev.ts +101 -0
  242. just_bash-0.1.2/just-bash/src/commands/rg/file-types.ts +261 -0
  243. just_bash-0.1.2/just-bash/src/commands/rg/gitignore.test.ts +128 -0
  244. just_bash-0.1.2/just-bash/src/commands/rg/gitignore.ts +443 -0
  245. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/README.md +43 -0
  246. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/binary.test.ts +305 -0
  247. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/feature.test.ts +1047 -0
  248. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/json.test.ts +227 -0
  249. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/misc.test.ts +1199 -0
  250. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/multiline.test.ts +105 -0
  251. just_bash-0.1.2/just-bash/src/commands/rg/imported-tests/regression.test.ts +1553 -0
  252. just_bash-0.1.2/just-bash/src/commands/rg/rg-options.ts +126 -0
  253. just_bash-0.1.2/just-bash/src/commands/rg/rg-parser.ts +640 -0
  254. just_bash-0.1.2/just-bash/src/commands/rg/rg-search.ts +997 -0
  255. just_bash-0.1.2/just-bash/src/commands/rg/rg.basic.test.ts +264 -0
  256. just_bash-0.1.2/just-bash/src/commands/rg/rg.edge-cases.test.ts +441 -0
  257. just_bash-0.1.2/just-bash/src/commands/rg/rg.filtering.test.ts +227 -0
  258. just_bash-0.1.2/just-bash/src/commands/rg/rg.flags.test.ts +166 -0
  259. just_bash-0.1.2/just-bash/src/commands/rg/rg.max-count.test.ts +408 -0
  260. just_bash-0.1.2/just-bash/src/commands/rg/rg.no-filename.test.ts +405 -0
  261. just_bash-0.1.2/just-bash/src/commands/rg/rg.output.test.ts +253 -0
  262. just_bash-0.1.2/just-bash/src/commands/rg/rg.patterns.test.ts +288 -0
  263. just_bash-0.1.2/just-bash/src/commands/rg/rg.ripgrep-compat.test.ts +934 -0
  264. just_bash-0.1.2/just-bash/src/commands/rg/rg.ts +114 -0
  265. just_bash-0.1.2/just-bash/src/commands/rm/rm.test.ts +152 -0
  266. just_bash-0.1.2/just-bash/src/commands/rm/rm.ts +73 -0
  267. just_bash-0.1.2/just-bash/src/commands/search-engine/index.ts +20 -0
  268. just_bash-0.1.2/just-bash/src/commands/search-engine/matcher.ts +620 -0
  269. just_bash-0.1.2/just-bash/src/commands/search-engine/regex.ts +135 -0
  270. just_bash-0.1.2/just-bash/src/commands/sed/executor.ts +808 -0
  271. just_bash-0.1.2/just-bash/src/commands/sed/lexer.ts +711 -0
  272. just_bash-0.1.2/just-bash/src/commands/sed/parser.ts +429 -0
  273. just_bash-0.1.2/just-bash/src/commands/sed/sed.advanced.test.ts +166 -0
  274. just_bash-0.1.2/just-bash/src/commands/sed/sed.binary.test.ts +23 -0
  275. just_bash-0.1.2/just-bash/src/commands/sed/sed.limits.test.ts +175 -0
  276. just_bash-0.1.2/just-bash/src/commands/sed/sed.test.ts +933 -0
  277. just_bash-0.1.2/just-bash/src/commands/sed/sed.ts +467 -0
  278. just_bash-0.1.2/just-bash/src/commands/sed/types.ts +308 -0
  279. just_bash-0.1.2/just-bash/src/commands/seq/seq.test.ts +170 -0
  280. just_bash-0.1.2/just-bash/src/commands/seq/seq.ts +168 -0
  281. just_bash-0.1.2/just-bash/src/commands/sleep/sleep.test.ts +179 -0
  282. just_bash-0.1.2/just-bash/src/commands/sleep/sleep.ts +81 -0
  283. just_bash-0.1.2/just-bash/src/commands/sort/comparator.ts +348 -0
  284. just_bash-0.1.2/just-bash/src/commands/sort/parser.ts +101 -0
  285. just_bash-0.1.2/just-bash/src/commands/sort/sort.advanced.test.ts +247 -0
  286. just_bash-0.1.2/just-bash/src/commands/sort/sort.binary.test.ts +23 -0
  287. just_bash-0.1.2/just-bash/src/commands/sort/sort.test.ts +259 -0
  288. just_bash-0.1.2/just-bash/src/commands/sort/sort.ts +202 -0
  289. just_bash-0.1.2/just-bash/src/commands/sort/types.ts +38 -0
  290. just_bash-0.1.2/just-bash/src/commands/split/split.test.ts +367 -0
  291. just_bash-0.1.2/just-bash/src/commands/split/split.ts +401 -0
  292. just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/datatypes.db +0 -0
  293. just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/products.db +0 -0
  294. just_bash-0.1.2/just-bash/src/commands/sqlite3/fixtures/users.db +0 -0
  295. just_bash-0.1.2/just-bash/src/commands/sqlite3/formatters.ts +428 -0
  296. just_bash-0.1.2/just-bash/src/commands/sqlite3/samples.sh +245 -0
  297. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.errors.test.ts +144 -0
  298. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.fixtures.test.ts +215 -0
  299. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.formatters.test.ts +316 -0
  300. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.options.test.ts +124 -0
  301. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.output-modes.test.ts +151 -0
  302. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.parsing.test.ts +198 -0
  303. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.test.ts +137 -0
  304. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.ts +533 -0
  305. just_bash-0.1.2/just-bash/src/commands/sqlite3/sqlite3.write-ops.test.ts +150 -0
  306. just_bash-0.1.2/just-bash/src/commands/sqlite3/worker.ts +161 -0
  307. just_bash-0.1.2/just-bash/src/commands/stat/stat.test.ts +115 -0
  308. just_bash-0.1.2/just-bash/src/commands/stat/stat.ts +103 -0
  309. just_bash-0.1.2/just-bash/src/commands/strings/strings.binary.test.ts +311 -0
  310. just_bash-0.1.2/just-bash/src/commands/strings/strings.test.ts +259 -0
  311. just_bash-0.1.2/just-bash/src/commands/strings/strings.ts +261 -0
  312. just_bash-0.1.2/just-bash/src/commands/tac/tac.test.ts +40 -0
  313. just_bash-0.1.2/just-bash/src/commands/tac/tac.ts +59 -0
  314. just_bash-0.1.2/just-bash/src/commands/tail/tail.binary.test.ts +38 -0
  315. just_bash-0.1.2/just-bash/src/commands/tail/tail.test.ts +148 -0
  316. just_bash-0.1.2/just-bash/src/commands/tail/tail.ts +42 -0
  317. just_bash-0.1.2/just-bash/src/commands/tar/archive.ts +475 -0
  318. just_bash-0.1.2/just-bash/src/commands/tar/tar.binary.test.ts +186 -0
  319. just_bash-0.1.2/just-bash/src/commands/tar/tar.bundle.test.ts +222 -0
  320. just_bash-0.1.2/just-bash/src/commands/tar/tar.test.ts +1355 -0
  321. just_bash-0.1.2/just-bash/src/commands/tar/tar.ts +1436 -0
  322. just_bash-0.1.2/just-bash/src/commands/tee/tee.binary.test.ts +18 -0
  323. just_bash-0.1.2/just-bash/src/commands/tee/tee.test.ts +56 -0
  324. just_bash-0.1.2/just-bash/src/commands/tee/tee.ts +58 -0
  325. just_bash-0.1.2/just-bash/src/commands/test/test.test.ts +265 -0
  326. just_bash-0.1.2/just-bash/src/commands/timeout/timeout.test.ts +153 -0
  327. just_bash-0.1.2/just-bash/src/commands/timeout/timeout.ts +173 -0
  328. just_bash-0.1.2/just-bash/src/commands/touch/touch.test.ts +69 -0
  329. just_bash-0.1.2/just-bash/src/commands/touch/touch.ts +50 -0
  330. just_bash-0.1.2/just-bash/src/commands/tr/tr.binary.test.ts +16 -0
  331. just_bash-0.1.2/just-bash/src/commands/tr/tr.complement.test.ts +77 -0
  332. just_bash-0.1.2/just-bash/src/commands/tr/tr.test.ts +106 -0
  333. just_bash-0.1.2/just-bash/src/commands/tr/tr.ts +220 -0
  334. just_bash-0.1.2/just-bash/src/commands/tree/tree.test.ts +143 -0
  335. just_bash-0.1.2/just-bash/src/commands/tree/tree.ts +314 -0
  336. just_bash-0.1.2/just-bash/src/commands/true/true.test.ts +46 -0
  337. just_bash-0.1.2/just-bash/src/commands/true/true.ts +17 -0
  338. just_bash-0.1.2/just-bash/src/commands/uniq/uniq.binary.test.ts +23 -0
  339. just_bash-0.1.2/just-bash/src/commands/uniq/uniq.test.ts +105 -0
  340. just_bash-0.1.2/just-bash/src/commands/uniq/uniq.ts +101 -0
  341. just_bash-0.1.2/just-bash/src/commands/wc/wc.binary.test.ts +28 -0
  342. just_bash-0.1.2/just-bash/src/commands/wc/wc.test.ts +131 -0
  343. just_bash-0.1.2/just-bash/src/commands/wc/wc.ts +152 -0
  344. just_bash-0.1.2/just-bash/src/commands/which/which.test.ts +85 -0
  345. just_bash-0.1.2/just-bash/src/commands/which/which.ts +74 -0
  346. just_bash-0.1.2/just-bash/src/commands/xan/aggregation.ts +247 -0
  347. just_bash-0.1.2/just-bash/src/commands/xan/csv.ts +66 -0
  348. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/employees.csv +21 -0
  349. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/metrics.csv +25 -0
  350. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/numbers.csv +6 -0
  351. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/products.csv +6 -0
  352. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/sales.csv +9 -0
  353. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/server_logs.csv +21 -0
  354. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/special_chars.csv +12 -0
  355. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/transactions.csv +21 -0
  356. just_bash-0.1.2/just-bash/src/commands/xan/fixtures/users.csv +5 -0
  357. just_bash-0.1.2/just-bash/src/commands/xan/moonblade-parser.ts +1241 -0
  358. just_bash-0.1.2/just-bash/src/commands/xan/moonblade-to-jq.ts +425 -0
  359. just_bash-0.1.2/just-bash/src/commands/xan/subcommands.ts +55 -0
  360. just_bash-0.1.2/just-bash/src/commands/xan/xan-agg.ts +302 -0
  361. just_bash-0.1.2/just-bash/src/commands/xan/xan-columns.ts +184 -0
  362. just_bash-0.1.2/just-bash/src/commands/xan/xan-core.ts +125 -0
  363. just_bash-0.1.2/just-bash/src/commands/xan/xan-data.ts +496 -0
  364. just_bash-0.1.2/just-bash/src/commands/xan/xan-filter.ts +203 -0
  365. just_bash-0.1.2/just-bash/src/commands/xan/xan-map.ts +203 -0
  366. just_bash-0.1.2/just-bash/src/commands/xan/xan-reshape.ts +580 -0
  367. just_bash-0.1.2/just-bash/src/commands/xan/xan-simple.ts +364 -0
  368. just_bash-0.1.2/just-bash/src/commands/xan/xan-utils.ts +127 -0
  369. just_bash-0.1.2/just-bash/src/commands/xan/xan-view.ts +126 -0
  370. just_bash-0.1.2/just-bash/src/commands/xan/xan.agg.test.ts +189 -0
  371. just_bash-0.1.2/just-bash/src/commands/xan/xan.basic.test.ts +283 -0
  372. just_bash-0.1.2/just-bash/src/commands/xan/xan.columns.test.ts +120 -0
  373. just_bash-0.1.2/just-bash/src/commands/xan/xan.data.test.ts +224 -0
  374. just_bash-0.1.2/just-bash/src/commands/xan/xan.filter-sort.test.ts +193 -0
  375. just_bash-0.1.2/just-bash/src/commands/xan/xan.frequency.test.ts +85 -0
  376. just_bash-0.1.2/just-bash/src/commands/xan/xan.groupby.test.ts +101 -0
  377. just_bash-0.1.2/just-bash/src/commands/xan/xan.map.test.ts +163 -0
  378. just_bash-0.1.2/just-bash/src/commands/xan/xan.multifile.test.ts +227 -0
  379. just_bash-0.1.2/just-bash/src/commands/xan/xan.reshape.test.ts +192 -0
  380. just_bash-0.1.2/just-bash/src/commands/xan/xan.select-advanced.test.ts +139 -0
  381. just_bash-0.1.2/just-bash/src/commands/xan/xan.transform.test.ts +81 -0
  382. just_bash-0.1.2/just-bash/src/commands/xan/xan.ts +439 -0
  383. just_bash-0.1.2/just-bash/src/commands/xargs/xargs.test.ts +355 -0
  384. just_bash-0.1.2/just-bash/src/commands/xargs/xargs.ts +206 -0
  385. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/products.csv +6 -0
  386. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/semicolon.csv +4 -0
  387. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/special.csv +9 -0
  388. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/tabs.tsv +5 -0
  389. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/csv/users.csv +4 -0
  390. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/app.ini +13 -0
  391. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/config.ini +16 -0
  392. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/ini/special.ini +44 -0
  393. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/nested.json +22 -0
  394. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/special.json +37 -0
  395. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/json/users.json +21 -0
  396. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/cargo.toml +17 -0
  397. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/config.toml +23 -0
  398. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/pyproject.toml +30 -0
  399. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/toml/special.toml +50 -0
  400. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/books.xml +20 -0
  401. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/special.xml +30 -0
  402. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/xml/users.xml +23 -0
  403. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/simple.yaml +7 -0
  404. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/special.yaml +38 -0
  405. just_bash-0.1.2/just-bash/src/commands/yq/fixtures/yaml/users.yaml +16 -0
  406. just_bash-0.1.2/just-bash/src/commands/yq/formats.ts +319 -0
  407. just_bash-0.1.2/just-bash/src/commands/yq/yq.env.test.ts +90 -0
  408. just_bash-0.1.2/just-bash/src/commands/yq/yq.fixtures.test.ts +768 -0
  409. just_bash-0.1.2/just-bash/src/commands/yq/yq.format-strings.test.ts +211 -0
  410. just_bash-0.1.2/just-bash/src/commands/yq/yq.navigation.test.ts +195 -0
  411. just_bash-0.1.2/just-bash/src/commands/yq/yq.test.ts +944 -0
  412. just_bash-0.1.2/just-bash/src/commands/yq/yq.ts +381 -0
  413. just_bash-0.1.2/just-bash/src/comparison-tests/README.md +186 -0
  414. just_bash-0.1.2/just-bash/src/comparison-tests/alias.comparison.test.ts +49 -0
  415. just_bash-0.1.2/just-bash/src/comparison-tests/awk.comparison.test.ts +219 -0
  416. just_bash-0.1.2/just-bash/src/comparison-tests/basename-dirname.comparison.test.ts +128 -0
  417. just_bash-0.1.2/just-bash/src/comparison-tests/cat.comparison.test.ts +84 -0
  418. just_bash-0.1.2/just-bash/src/comparison-tests/cd.comparison.test.ts +151 -0
  419. just_bash-0.1.2/just-bash/src/comparison-tests/column-join.comparison.test.ts +139 -0
  420. just_bash-0.1.2/just-bash/src/comparison-tests/cut.comparison.test.ts +142 -0
  421. just_bash-0.1.2/just-bash/src/comparison-tests/echo.comparison.test.ts +69 -0
  422. just_bash-0.1.2/just-bash/src/comparison-tests/env.comparison.test.ts +88 -0
  423. just_bash-0.1.2/just-bash/src/comparison-tests/export.comparison.test.ts +86 -0
  424. just_bash-0.1.2/just-bash/src/comparison-tests/file-operations.comparison.test.ts +309 -0
  425. just_bash-0.1.2/just-bash/src/comparison-tests/find.comparison.test.ts +241 -0
  426. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/alias.comparison.fixtures.json +26 -0
  427. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/awk.comparison.fixtures.json +196 -0
  428. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/basename-dirname.comparison.fixtures.json +107 -0
  429. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/cat.comparison.fixtures.json +84 -0
  430. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/column-join.comparison.fixtures.json +127 -0
  431. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/cut.comparison.fixtures.json +151 -0
  432. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/echo.comparison.fixtures.json +72 -0
  433. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/export.comparison.fixtures.json +65 -0
  434. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/find.comparison.fixtures.json +236 -0
  435. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/glob.comparison.fixtures.json +111 -0
  436. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/grep.comparison.fixtures.json +300 -0
  437. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/head-tail.comparison.fixtures.json +198 -0
  438. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/here-document.comparison.fixtures.json +37 -0
  439. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/jq.comparison.fixtures.json +250 -0
  440. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/ls.comparison.fixtures.json +128 -0
  441. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/paste.comparison.fixtures.json +170 -0
  442. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/pipes-redirections.comparison.fixtures.json +198 -0
  443. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/sed.comparison.fixtures.json +196 -0
  444. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/sort.comparison.fixtures.json +207 -0
  445. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/strings-split.comparison.fixtures.json +87 -0
  446. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/tar.comparison.fixtures.json +85 -0
  447. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/test.comparison.fixtures.json +307 -0
  448. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/text-processing.comparison.fixtures.json +213 -0
  449. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/tr.comparison.fixtures.json +142 -0
  450. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/uniq.comparison.fixtures.json +147 -0
  451. just_bash-0.1.2/just-bash/src/comparison-tests/fixtures/wc.comparison.fixtures.json +130 -0
  452. just_bash-0.1.2/just-bash/src/comparison-tests/glob.comparison.test.ts +108 -0
  453. just_bash-0.1.2/just-bash/src/comparison-tests/grep.comparison.test.ts +281 -0
  454. just_bash-0.1.2/just-bash/src/comparison-tests/head-tail.comparison.test.ts +219 -0
  455. just_bash-0.1.2/just-bash/src/comparison-tests/here-document.comparison.test.ts +79 -0
  456. just_bash-0.1.2/just-bash/src/comparison-tests/jq.comparison.test.ts +247 -0
  457. just_bash-0.1.2/just-bash/src/comparison-tests/ls.comparison.test.ts +130 -0
  458. just_bash-0.1.2/just-bash/src/comparison-tests/parse-errors.comparison.test.ts +286 -0
  459. just_bash-0.1.2/just-bash/src/comparison-tests/paste.comparison.test.ts +173 -0
  460. just_bash-0.1.2/just-bash/src/comparison-tests/pipes-redirections.comparison.test.ts +428 -0
  461. just_bash-0.1.2/just-bash/src/comparison-tests/sed.comparison.test.ts +195 -0
  462. just_bash-0.1.2/just-bash/src/comparison-tests/sort.comparison.test.ts +213 -0
  463. just_bash-0.1.2/just-bash/src/comparison-tests/strings-split.comparison.test.ts +107 -0
  464. just_bash-0.1.2/just-bash/src/comparison-tests/tar.comparison.test.ts +128 -0
  465. just_bash-0.1.2/just-bash/src/comparison-tests/tee.comparison.test.ts +125 -0
  466. just_bash-0.1.2/just-bash/src/comparison-tests/test-helpers.ts +557 -0
  467. just_bash-0.1.2/just-bash/src/comparison-tests/test.comparison.test.ts +384 -0
  468. just_bash-0.1.2/just-bash/src/comparison-tests/text-processing.comparison.test.ts +234 -0
  469. just_bash-0.1.2/just-bash/src/comparison-tests/tr.comparison.test.ts +143 -0
  470. just_bash-0.1.2/just-bash/src/comparison-tests/uniq.comparison.test.ts +155 -0
  471. just_bash-0.1.2/just-bash/src/comparison-tests/vitest.setup.ts +9 -0
  472. just_bash-0.1.2/just-bash/src/comparison-tests/wc.comparison.test.ts +141 -0
  473. just_bash-0.1.2/just-bash/src/custom-commands.test.ts +293 -0
  474. just_bash-0.1.2/just-bash/src/custom-commands.ts +66 -0
  475. just_bash-0.1.2/just-bash/src/fs/in-memory-fs/in-memory-fs.test.ts +312 -0
  476. just_bash-0.1.2/just-bash/src/fs/in-memory-fs/in-memory-fs.ts +649 -0
  477. just_bash-0.1.2/just-bash/src/fs/in-memory-fs/index.ts +1 -0
  478. just_bash-0.1.2/just-bash/src/fs/init.ts +96 -0
  479. just_bash-0.1.2/just-bash/src/fs/interface.ts +256 -0
  480. just_bash-0.1.2/just-bash/src/fs/mountable-fs/index.ts +5 -0
  481. just_bash-0.1.2/just-bash/src/fs/mountable-fs/mountable-fs.test.ts +665 -0
  482. just_bash-0.1.2/just-bash/src/fs/mountable-fs/mountable-fs.ts +637 -0
  483. just_bash-0.1.2/just-bash/src/fs/overlay-fs/index.ts +1 -0
  484. just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.e2e.test.ts +613 -0
  485. just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.security.test.ts +737 -0
  486. just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.test.ts +727 -0
  487. just_bash-0.1.2/just-bash/src/fs/overlay-fs/overlay-fs.ts +1034 -0
  488. just_bash-0.1.2/just-bash/src/fs/read-write-fs/index.ts +1 -0
  489. just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.security.test.ts +419 -0
  490. just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.test.ts +600 -0
  491. just_bash-0.1.2/just-bash/src/fs/read-write-fs/read-write-fs.ts +423 -0
  492. just_bash-0.1.2/just-bash/src/fs/utils.ts +80 -0
  493. just_bash-0.1.2/just-bash/src/index.ts +61 -0
  494. just_bash-0.1.2/just-bash/src/interpreter/arithmetic.ts +949 -0
  495. just_bash-0.1.2/just-bash/src/interpreter/assoc-array.test.ts +203 -0
  496. just_bash-0.1.2/just-bash/src/interpreter/builtins/break.test.ts +181 -0
  497. just_bash-0.1.2/just-bash/src/interpreter/builtins/break.ts +39 -0
  498. just_bash-0.1.2/just-bash/src/interpreter/builtins/cd.test.ts +97 -0
  499. just_bash-0.1.2/just-bash/src/interpreter/builtins/cd.ts +115 -0
  500. just_bash-0.1.2/just-bash/src/interpreter/builtins/continue.test.ts +219 -0
  501. just_bash-0.1.2/just-bash/src/interpreter/builtins/continue.ts +39 -0
  502. just_bash-0.1.2/just-bash/src/interpreter/builtins/declare.ts +362 -0
  503. just_bash-0.1.2/just-bash/src/interpreter/builtins/eval.test.ts +161 -0
  504. just_bash-0.1.2/just-bash/src/interpreter/builtins/eval.ts +71 -0
  505. just_bash-0.1.2/just-bash/src/interpreter/builtins/exit.test.ts +128 -0
  506. just_bash-0.1.2/just-bash/src/interpreter/builtins/exit.ts +29 -0
  507. just_bash-0.1.2/just-bash/src/interpreter/builtins/export.test.ts +126 -0
  508. just_bash-0.1.2/just-bash/src/interpreter/builtins/export.ts +96 -0
  509. just_bash-0.1.2/just-bash/src/interpreter/builtins/index.ts +38 -0
  510. just_bash-0.1.2/just-bash/src/interpreter/builtins/let.ts +102 -0
  511. just_bash-0.1.2/just-bash/src/interpreter/builtins/local.test.ts +173 -0
  512. just_bash-0.1.2/just-bash/src/interpreter/builtins/local.ts +80 -0
  513. just_bash-0.1.2/just-bash/src/interpreter/builtins/mapfile.ts +131 -0
  514. just_bash-0.1.2/just-bash/src/interpreter/builtins/read.test.ts +104 -0
  515. just_bash-0.1.2/just-bash/src/interpreter/builtins/read.ts +201 -0
  516. just_bash-0.1.2/just-bash/src/interpreter/builtins/return.test.ts +189 -0
  517. just_bash-0.1.2/just-bash/src/interpreter/builtins/return.ts +34 -0
  518. just_bash-0.1.2/just-bash/src/interpreter/builtins/set.test.ts +496 -0
  519. just_bash-0.1.2/just-bash/src/interpreter/builtins/set.ts +288 -0
  520. just_bash-0.1.2/just-bash/src/interpreter/builtins/shift.test.ts +199 -0
  521. just_bash-0.1.2/just-bash/src/interpreter/builtins/shift.ts +67 -0
  522. just_bash-0.1.2/just-bash/src/interpreter/builtins/source.test.ts +155 -0
  523. just_bash-0.1.2/just-bash/src/interpreter/builtins/source.ts +136 -0
  524. just_bash-0.1.2/just-bash/src/interpreter/builtins/unset.test.ts +124 -0
  525. just_bash-0.1.2/just-bash/src/interpreter/builtins/unset.ts +101 -0
  526. just_bash-0.1.2/just-bash/src/interpreter/builtins/variable-helpers.ts +94 -0
  527. just_bash-0.1.2/just-bash/src/interpreter/conditionals.ts +635 -0
  528. just_bash-0.1.2/just-bash/src/interpreter/control-flow.ts +478 -0
  529. just_bash-0.1.2/just-bash/src/interpreter/errors.ts +200 -0
  530. just_bash-0.1.2/just-bash/src/interpreter/expansion/analysis.ts +200 -0
  531. just_bash-0.1.2/just-bash/src/interpreter/expansion/brace-range.ts +180 -0
  532. just_bash-0.1.2/just-bash/src/interpreter/expansion/pattern.ts +242 -0
  533. just_bash-0.1.2/just-bash/src/interpreter/expansion/variable.ts +262 -0
  534. just_bash-0.1.2/just-bash/src/interpreter/expansion/word-split.ts +108 -0
  535. just_bash-0.1.2/just-bash/src/interpreter/expansion.ts +1545 -0
  536. just_bash-0.1.2/just-bash/src/interpreter/functions.ts +84 -0
  537. just_bash-0.1.2/just-bash/src/interpreter/helpers/array.ts +77 -0
  538. just_bash-0.1.2/just-bash/src/interpreter/helpers/condition.ts +48 -0
  539. just_bash-0.1.2/just-bash/src/interpreter/helpers/errors.ts +11 -0
  540. just_bash-0.1.2/just-bash/src/interpreter/helpers/file-tests.ts +266 -0
  541. just_bash-0.1.2/just-bash/src/interpreter/helpers/ifs.ts +137 -0
  542. just_bash-0.1.2/just-bash/src/interpreter/helpers/loop.ts +91 -0
  543. just_bash-0.1.2/just-bash/src/interpreter/helpers/numeric-compare.ts +39 -0
  544. just_bash-0.1.2/just-bash/src/interpreter/helpers/readonly.ts +44 -0
  545. just_bash-0.1.2/just-bash/src/interpreter/helpers/regex.ts +11 -0
  546. just_bash-0.1.2/just-bash/src/interpreter/helpers/result.ts +85 -0
  547. just_bash-0.1.2/just-bash/src/interpreter/helpers/statements.ts +66 -0
  548. just_bash-0.1.2/just-bash/src/interpreter/helpers/string-compare.ts +37 -0
  549. just_bash-0.1.2/just-bash/src/interpreter/helpers/string-tests.ts +27 -0
  550. just_bash-0.1.2/just-bash/src/interpreter/helpers/variable-tests.ts +62 -0
  551. just_bash-0.1.2/just-bash/src/interpreter/helpers/word-parts.ts +49 -0
  552. just_bash-0.1.2/just-bash/src/interpreter/index.ts +7 -0
  553. just_bash-0.1.2/just-bash/src/interpreter/interpreter.ts +1231 -0
  554. just_bash-0.1.2/just-bash/src/interpreter/redirections.binary.test.ts +176 -0
  555. just_bash-0.1.2/just-bash/src/interpreter/redirections.ts +183 -0
  556. just_bash-0.1.2/just-bash/src/interpreter/types.ts +87 -0
  557. just_bash-0.1.2/just-bash/src/limits.ts +74 -0
  558. just_bash-0.1.2/just-bash/src/network/allow-list/bypass.test.ts +549 -0
  559. just_bash-0.1.2/just-bash/src/network/allow-list/e2e.test.ts +464 -0
  560. just_bash-0.1.2/just-bash/src/network/allow-list/mock.test.ts +106 -0
  561. just_bash-0.1.2/just-bash/src/network/allow-list/shared.ts +188 -0
  562. just_bash-0.1.2/just-bash/src/network/allow-list/unit.test.ts +846 -0
  563. just_bash-0.1.2/just-bash/src/network/allow-list.ts +148 -0
  564. just_bash-0.1.2/just-bash/src/network/fetch.ts +189 -0
  565. just_bash-0.1.2/just-bash/src/network/index.ts +20 -0
  566. just_bash-0.1.2/just-bash/src/network/types.ts +119 -0
  567. just_bash-0.1.2/just-bash/src/parser/arithmetic-parser.ts +903 -0
  568. just_bash-0.1.2/just-bash/src/parser/command-parser.ts +299 -0
  569. just_bash-0.1.2/just-bash/src/parser/compound-parser.ts +388 -0
  570. just_bash-0.1.2/just-bash/src/parser/conditional-parser.ts +203 -0
  571. just_bash-0.1.2/just-bash/src/parser/expansion-parser.ts +800 -0
  572. just_bash-0.1.2/just-bash/src/parser/lexer.ts +1507 -0
  573. just_bash-0.1.2/just-bash/src/parser/parser.ts +1045 -0
  574. just_bash-0.1.2/just-bash/src/parser/types.ts +60 -0
  575. just_bash-0.1.2/just-bash/src/parser/word-parser.ts +593 -0
  576. just_bash-0.1.2/just-bash/src/readme.test.ts +522 -0
  577. just_bash-0.1.2/just-bash/src/sandbox/Command.ts +92 -0
  578. just_bash-0.1.2/just-bash/src/sandbox/Sandbox.test.ts +403 -0
  579. just_bash-0.1.2/just-bash/src/sandbox/Sandbox.ts +137 -0
  580. just_bash-0.1.2/just-bash/src/sandbox/index.ts +10 -0
  581. just_bash-0.1.2/just-bash/src/shared/operators.ts +33 -0
  582. just_bash-0.1.2/just-bash/src/shell/glob.ts +518 -0
  583. just_bash-0.1.2/just-bash/src/shell-metadata.ts +49 -0
  584. just_bash-0.1.2/just-bash/src/spec-tests/KNOWN_LIMITATIONS.md +486 -0
  585. just_bash-0.1.2/just-bash/src/spec-tests/README.md +72 -0
  586. just_bash-0.1.2/just-bash/src/spec-tests/cases/LICENSE-APACHE-2.0.txt +207 -0
  587. just_bash-0.1.2/just-bash/src/spec-tests/cases/alias.test.sh +573 -0
  588. just_bash-0.1.2/just-bash/src/spec-tests/cases/append.test.sh +324 -0
  589. just_bash-0.1.2/just-bash/src/spec-tests/cases/arg-parse.test.sh +52 -0
  590. just_bash-0.1.2/just-bash/src/spec-tests/cases/arith-context.test.sh +245 -0
  591. just_bash-0.1.2/just-bash/src/spec-tests/cases/arith-dynamic.test.sh +95 -0
  592. just_bash-0.1.2/just-bash/src/spec-tests/cases/arith.test.sh +1054 -0
  593. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-assign.test.sh +377 -0
  594. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-assoc.test.sh +795 -0
  595. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-basic.test.sh +45 -0
  596. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-compat.test.sh +188 -0
  597. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-literal.test.sh +336 -0
  598. just_bash-0.1.2/just-bash/src/spec-tests/cases/array-sparse.test.sh +1240 -0
  599. just_bash-0.1.2/just-bash/src/spec-tests/cases/array.test.sh +1054 -0
  600. just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-deferred.test.sh +115 -0
  601. just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-dialects.test.sh +151 -0
  602. just_bash-0.1.2/just-bash/src/spec-tests/cases/assign-extended.test.sh +990 -0
  603. just_bash-0.1.2/just-bash/src/spec-tests/cases/assign.test.sh +783 -0
  604. just_bash-0.1.2/just-bash/src/spec-tests/cases/background.test.sh +425 -0
  605. just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-features.test.sh +392 -0
  606. just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-idioms.test.sh +576 -0
  607. just_bash-0.1.2/just-bash/src/spec-tests/cases/ble-unset.test.sh +248 -0
  608. just_bash-0.1.2/just-bash/src/spec-tests/cases/blog-other1.test.sh +66 -0
  609. just_bash-0.1.2/just-bash/src/spec-tests/cases/blog1.test.sh +96 -0
  610. just_bash-0.1.2/just-bash/src/spec-tests/cases/blog2.test.sh +60 -0
  611. just_bash-0.1.2/just-bash/src/spec-tests/cases/bool-parse.test.sh +176 -0
  612. just_bash-0.1.2/just-bash/src/spec-tests/cases/brace-expansion.test.sh +507 -0
  613. just_bash-0.1.2/just-bash/src/spec-tests/cases/bugs.test.sh +455 -0
  614. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bash.test.sh +226 -0
  615. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bind.test.sh +159 -0
  616. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-bracket.test.sh +776 -0
  617. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-cd.test.sh +532 -0
  618. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-completion.test.sh +654 -0
  619. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-dirs.test.sh +261 -0
  620. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-echo.test.sh +331 -0
  621. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-eval-source.test.sh +382 -0
  622. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-fc.test.sh +276 -0
  623. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-getopts.test.sh +492 -0
  624. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-history.test.sh +418 -0
  625. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-kill.test.sh +366 -0
  626. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-meta-assign.test.sh +377 -0
  627. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-meta.test.sh +395 -0
  628. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-misc.test.sh +167 -0
  629. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-printf.test.sh +1615 -0
  630. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-process.test.sh +628 -0
  631. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-read.test.sh +1217 -0
  632. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-set.test.sh +431 -0
  633. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-special.test.sh +319 -0
  634. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-times.test.sh +16 -0
  635. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap-bash.test.sh +661 -0
  636. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap-err.test.sh +651 -0
  637. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-trap.test.sh +614 -0
  638. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-type-bash.test.sh +369 -0
  639. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-type.test.sh +166 -0
  640. just_bash-0.1.2/just-bash/src/spec-tests/cases/builtin-vars.test.sh +709 -0
  641. just_bash-0.1.2/just-bash/src/spec-tests/cases/case_.test.sh +245 -0
  642. just_bash-0.1.2/just-bash/src/spec-tests/cases/command-parsing.test.sh +67 -0
  643. just_bash-0.1.2/just-bash/src/spec-tests/cases/command-sub-ksh.test.sh +112 -0
  644. just_bash-0.1.2/just-bash/src/spec-tests/cases/command-sub.test.sh +305 -0
  645. just_bash-0.1.2/just-bash/src/spec-tests/cases/command_.test.sh +256 -0
  646. just_bash-0.1.2/just-bash/src/spec-tests/cases/comments.test.sh +12 -0
  647. just_bash-0.1.2/just-bash/src/spec-tests/cases/dbracket.test.sh +493 -0
  648. just_bash-0.1.2/just-bash/src/spec-tests/cases/divergence.test.sh +118 -0
  649. just_bash-0.1.2/just-bash/src/spec-tests/cases/dparen.test.sh +212 -0
  650. just_bash-0.1.2/just-bash/src/spec-tests/cases/empty-bodies.test.sh +25 -0
  651. just_bash-0.1.2/just-bash/src/spec-tests/cases/errexit.test.sh +539 -0
  652. just_bash-0.1.2/just-bash/src/spec-tests/cases/exit-status.test.sh +324 -0
  653. just_bash-0.1.2/just-bash/src/spec-tests/cases/explore-parsing.test.sh +43 -0
  654. just_bash-0.1.2/just-bash/src/spec-tests/cases/extglob-files.test.sh +407 -0
  655. just_bash-0.1.2/just-bash/src/spec-tests/cases/extglob-match.test.sh +391 -0
  656. just_bash-0.1.2/just-bash/src/spec-tests/cases/fatal-errors.test.sh +192 -0
  657. just_bash-0.1.2/just-bash/src/spec-tests/cases/for-expr.test.sh +173 -0
  658. just_bash-0.1.2/just-bash/src/spec-tests/cases/func-parsing.test.sh +108 -0
  659. just_bash-0.1.2/just-bash/src/spec-tests/cases/glob-bash.test.sh +144 -0
  660. just_bash-0.1.2/just-bash/src/spec-tests/cases/glob.test.sh +420 -0
  661. just_bash-0.1.2/just-bash/src/spec-tests/cases/globignore.test.sh +232 -0
  662. just_bash-0.1.2/just-bash/src/spec-tests/cases/globstar.test.sh +98 -0
  663. just_bash-0.1.2/just-bash/src/spec-tests/cases/here-doc.test.sh +436 -0
  664. just_bash-0.1.2/just-bash/src/spec-tests/cases/if_.test.sh +55 -0
  665. just_bash-0.1.2/just-bash/src/spec-tests/cases/interactive-parse.test.sh +38 -0
  666. just_bash-0.1.2/just-bash/src/spec-tests/cases/interactive.test.sh +418 -0
  667. just_bash-0.1.2/just-bash/src/spec-tests/cases/introspect.test.sh +294 -0
  668. just_bash-0.1.2/just-bash/src/spec-tests/cases/known-differences.test.sh +29 -0
  669. just_bash-0.1.2/just-bash/src/spec-tests/cases/let.test.sh +23 -0
  670. just_bash-0.1.2/just-bash/src/spec-tests/cases/loop.test.sh +627 -0
  671. just_bash-0.1.2/just-bash/src/spec-tests/cases/nameref.test.sh +637 -0
  672. just_bash-0.1.2/just-bash/src/spec-tests/cases/nix-idioms.test.sh +197 -0
  673. just_bash-0.1.2/just-bash/src/spec-tests/cases/nocasematch-match.test.sh +71 -0
  674. just_bash-0.1.2/just-bash/src/spec-tests/cases/nul-bytes.test.sh +530 -0
  675. just_bash-0.1.2/just-bash/src/spec-tests/cases/paren-ambiguity.test.sh +152 -0
  676. just_bash-0.1.2/just-bash/src/spec-tests/cases/parse-errors.test.sh +221 -0
  677. just_bash-0.1.2/just-bash/src/spec-tests/cases/pipeline.test.sh +285 -0
  678. just_bash-0.1.2/just-bash/src/spec-tests/cases/posix.test.sh +162 -0
  679. just_bash-0.1.2/just-bash/src/spec-tests/cases/print-source-code.test.sh +67 -0
  680. just_bash-0.1.2/just-bash/src/spec-tests/cases/process-sub.test.sh +204 -0
  681. just_bash-0.1.2/just-bash/src/spec-tests/cases/prompt.test.sh +353 -0
  682. just_bash-0.1.2/just-bash/src/spec-tests/cases/quote.test.sh +314 -0
  683. just_bash-0.1.2/just-bash/src/spec-tests/cases/redir-order.test.sh +71 -0
  684. just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect-command.test.sh +344 -0
  685. just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect-multi.test.sh +312 -0
  686. just_bash-0.1.2/just-bash/src/spec-tests/cases/redirect.test.sh +639 -0
  687. just_bash-0.1.2/just-bash/src/spec-tests/cases/regex.test.sh +643 -0
  688. just_bash-0.1.2/just-bash/src/spec-tests/cases/serialize.test.sh +239 -0
  689. just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-func.test.sh +186 -0
  690. just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-options-bash.test.sh +155 -0
  691. just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-options.test.sh +771 -0
  692. just_bash-0.1.2/just-bash/src/spec-tests/cases/sh-usage.test.sh +253 -0
  693. just_bash-0.1.2/just-bash/src/spec-tests/cases/shell-bugs.test.sh +36 -0
  694. just_bash-0.1.2/just-bash/src/spec-tests/cases/shell-grammar.test.sh +208 -0
  695. just_bash-0.1.2/just-bash/src/spec-tests/cases/smoke.test.sh +126 -0
  696. just_bash-0.1.2/just-bash/src/spec-tests/cases/spec-harness-bug.test.sh +9 -0
  697. just_bash-0.1.2/just-bash/src/spec-tests/cases/strict-options.test.sh +355 -0
  698. just_bash-0.1.2/just-bash/src/spec-tests/cases/subshell.test.sh +24 -0
  699. just_bash-0.1.2/just-bash/src/spec-tests/cases/temp-binding.test.sh +162 -0
  700. just_bash-0.1.2/just-bash/src/spec-tests/cases/tilde.test.sh +184 -0
  701. just_bash-0.1.2/just-bash/src/spec-tests/cases/toysh-posix.test.sh +403 -0
  702. just_bash-0.1.2/just-bash/src/spec-tests/cases/toysh.test.sh +144 -0
  703. just_bash-0.1.2/just-bash/src/spec-tests/cases/type-compat.test.sh +159 -0
  704. just_bash-0.1.2/just-bash/src/spec-tests/cases/unicode.test.sh +203 -0
  705. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-num.test.sh +45 -0
  706. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-bash.test.sh +544 -0
  707. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-len.test.sh +273 -0
  708. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-patsub.test.sh +415 -0
  709. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-slice.test.sh +414 -0
  710. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-strip.test.sh +407 -0
  711. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-op-test.test.sh +841 -0
  712. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-ref.test.sh +776 -0
  713. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-sub-quote.test.sh +370 -0
  714. just_bash-0.1.2/just-bash/src/spec-tests/cases/var-sub.test.sh +66 -0
  715. just_bash-0.1.2/just-bash/src/spec-tests/cases/vars-bash.test.sh +32 -0
  716. just_bash-0.1.2/just-bash/src/spec-tests/cases/vars-special.test.sh +810 -0
  717. just_bash-0.1.2/just-bash/src/spec-tests/cases/whitespace.test.sh +119 -0
  718. just_bash-0.1.2/just-bash/src/spec-tests/cases/word-eval.test.sh +67 -0
  719. just_bash-0.1.2/just-bash/src/spec-tests/cases/word-split.test.sh +940 -0
  720. just_bash-0.1.2/just-bash/src/spec-tests/cases/xtrace.test.sh +431 -0
  721. just_bash-0.1.2/just-bash/src/spec-tests/cases/zsh-assoc.test.sh +64 -0
  722. just_bash-0.1.2/just-bash/src/spec-tests/cases/zsh-idioms.test.sh +58 -0
  723. just_bash-0.1.2/just-bash/src/spec-tests/parser.ts +438 -0
  724. just_bash-0.1.2/just-bash/src/spec-tests/runner.ts +291 -0
  725. just_bash-0.1.2/just-bash/src/spec-tests/spec-helpers.ts +71 -0
  726. just_bash-0.1.2/just-bash/src/spec-tests/spec.test.ts +230 -0
  727. just_bash-0.1.2/just-bash/src/syntax/break-continue.test.ts +171 -0
  728. just_bash-0.1.2/just-bash/src/syntax/case-statement.test.ts +202 -0
  729. just_bash-0.1.2/just-bash/src/syntax/command-substitution.test.ts +183 -0
  730. just_bash-0.1.2/just-bash/src/syntax/composition.test.ts +509 -0
  731. just_bash-0.1.2/just-bash/src/syntax/control-flow.test.ts +351 -0
  732. just_bash-0.1.2/just-bash/src/syntax/execution-protection.test.ts +625 -0
  733. just_bash-0.1.2/just-bash/src/syntax/here-document.test.ts +128 -0
  734. just_bash-0.1.2/just-bash/src/syntax/loops.test.ts +207 -0
  735. just_bash-0.1.2/just-bash/src/syntax/operators.test.ts +361 -0
  736. just_bash-0.1.2/just-bash/src/syntax/parse-errors.test.ts +222 -0
  737. just_bash-0.1.2/just-bash/src/syntax/parser-edge-cases.test.ts +330 -0
  738. just_bash-0.1.2/just-bash/src/syntax/parser-protection.test.ts +230 -0
  739. just_bash-0.1.2/just-bash/src/syntax/set-errexit.test.ts +360 -0
  740. just_bash-0.1.2/just-bash/src/syntax/set-pipefail.test.ts +116 -0
  741. just_bash-0.1.2/just-bash/src/syntax/source.test.ts +65 -0
  742. just_bash-0.1.2/just-bash/src/syntax/subshell-args.test.ts +165 -0
  743. just_bash-0.1.2/just-bash/src/syntax/variables.test.ts +286 -0
  744. just_bash-0.1.2/just-bash/src/types.ts +119 -0
  745. just_bash-0.1.2/just-bash/src/utils/args.ts +196 -0
  746. just_bash-0.1.2/just-bash/src/utils/constants.ts +16 -0
  747. just_bash-0.1.2/just-bash/src/utils/file-reader.ts +148 -0
  748. just_bash-0.1.2/just-bash/src/utils/glob.ts +101 -0
  749. just_bash-0.1.2/just-bash/tsconfig.json +17 -0
  750. just_bash-0.1.2/just-bash/vitest.comparison.config.ts +10 -0
  751. just_bash-0.1.2/just-bash/vitest.config.ts +10 -0
  752. just_bash-0.1.2/just-bash/vitest.unit.config.ts +9 -0
  753. just_bash-0.1.2/pyproject.toml +66 -0
  754. just_bash-0.1.2/src/just_bash/__init__.py +55 -0
  755. just_bash-0.1.2/src/just_bash/ast/__init__.py +213 -0
  756. just_bash-0.1.2/src/just_bash/ast/factory.py +320 -0
  757. just_bash-0.1.2/src/just_bash/ast/types.py +953 -0
  758. just_bash-0.1.2/src/just_bash/bash.py +210 -0
  759. just_bash-0.1.2/src/just_bash/commands/__init__.py +23 -0
  760. just_bash-0.1.2/src/just_bash/commands/argv/__init__.py +5 -0
  761. just_bash-0.1.2/src/just_bash/commands/argv/argv.py +21 -0
  762. just_bash-0.1.2/src/just_bash/commands/awk/__init__.py +5 -0
  763. just_bash-0.1.2/src/just_bash/commands/awk/awk.py +1168 -0
  764. just_bash-0.1.2/src/just_bash/commands/base64/__init__.py +5 -0
  765. just_bash-0.1.2/src/just_bash/commands/base64/base64.py +138 -0
  766. just_bash-0.1.2/src/just_bash/commands/basename/__init__.py +5 -0
  767. just_bash-0.1.2/src/just_bash/commands/basename/basename.py +72 -0
  768. just_bash-0.1.2/src/just_bash/commands/bash/__init__.py +5 -0
  769. just_bash-0.1.2/src/just_bash/commands/bash/bash.py +188 -0
  770. just_bash-0.1.2/src/just_bash/commands/cat/__init__.py +5 -0
  771. just_bash-0.1.2/src/just_bash/commands/cat/cat.py +173 -0
  772. just_bash-0.1.2/src/just_bash/commands/checksum/__init__.py +5 -0
  773. just_bash-0.1.2/src/just_bash/commands/checksum/checksum.py +179 -0
  774. just_bash-0.1.2/src/just_bash/commands/chmod/__init__.py +5 -0
  775. just_bash-0.1.2/src/just_bash/commands/chmod/chmod.py +216 -0
  776. just_bash-0.1.2/src/just_bash/commands/column/__init__.py +5 -0
  777. just_bash-0.1.2/src/just_bash/commands/column/column.py +180 -0
  778. just_bash-0.1.2/src/just_bash/commands/comm/__init__.py +5 -0
  779. just_bash-0.1.2/src/just_bash/commands/comm/comm.py +150 -0
  780. just_bash-0.1.2/src/just_bash/commands/compression/__init__.py +5 -0
  781. just_bash-0.1.2/src/just_bash/commands/compression/compression.py +181 -0
  782. just_bash-0.1.2/src/just_bash/commands/cp/__init__.py +5 -0
  783. just_bash-0.1.2/src/just_bash/commands/cp/cp.py +149 -0
  784. just_bash-0.1.2/src/just_bash/commands/curl/__init__.py +5 -0
  785. just_bash-0.1.2/src/just_bash/commands/curl/curl.py +677 -0
  786. just_bash-0.1.2/src/just_bash/commands/cut/__init__.py +5 -0
  787. just_bash-0.1.2/src/just_bash/commands/cut/cut.py +327 -0
  788. just_bash-0.1.2/src/just_bash/commands/date/__init__.py +5 -0
  789. just_bash-0.1.2/src/just_bash/commands/date/date.py +258 -0
  790. just_bash-0.1.2/src/just_bash/commands/diff/__init__.py +5 -0
  791. just_bash-0.1.2/src/just_bash/commands/diff/diff.py +118 -0
  792. just_bash-0.1.2/src/just_bash/commands/dirname/__init__.py +5 -0
  793. just_bash-0.1.2/src/just_bash/commands/dirname/dirname.py +56 -0
  794. just_bash-0.1.2/src/just_bash/commands/du/__init__.py +5 -0
  795. just_bash-0.1.2/src/just_bash/commands/du/du.py +150 -0
  796. just_bash-0.1.2/src/just_bash/commands/echo/__init__.py +5 -0
  797. just_bash-0.1.2/src/just_bash/commands/echo/echo.py +125 -0
  798. just_bash-0.1.2/src/just_bash/commands/expand/__init__.py +5 -0
  799. just_bash-0.1.2/src/just_bash/commands/expand/expand.py +299 -0
  800. just_bash-0.1.2/src/just_bash/commands/expr/__init__.py +5 -0
  801. just_bash-0.1.2/src/just_bash/commands/expr/expr.py +273 -0
  802. just_bash-0.1.2/src/just_bash/commands/file/__init__.py +5 -0
  803. just_bash-0.1.2/src/just_bash/commands/file/file.py +151 -0
  804. just_bash-0.1.2/src/just_bash/commands/find/__init__.py +5 -0
  805. just_bash-0.1.2/src/just_bash/commands/find/find.py +622 -0
  806. just_bash-0.1.2/src/just_bash/commands/fold/__init__.py +5 -0
  807. just_bash-0.1.2/src/just_bash/commands/fold/fold.py +160 -0
  808. just_bash-0.1.2/src/just_bash/commands/grep/__init__.py +5 -0
  809. just_bash-0.1.2/src/just_bash/commands/grep/grep.py +412 -0
  810. just_bash-0.1.2/src/just_bash/commands/head/__init__.py +5 -0
  811. just_bash-0.1.2/src/just_bash/commands/head/head.py +167 -0
  812. just_bash-0.1.2/src/just_bash/commands/help/__init__.py +5 -0
  813. just_bash-0.1.2/src/just_bash/commands/help/help.py +67 -0
  814. just_bash-0.1.2/src/just_bash/commands/hostname/__init__.py +5 -0
  815. just_bash-0.1.2/src/just_bash/commands/hostname/hostname.py +21 -0
  816. just_bash-0.1.2/src/just_bash/commands/join/__init__.py +5 -0
  817. just_bash-0.1.2/src/just_bash/commands/join/join.py +252 -0
  818. just_bash-0.1.2/src/just_bash/commands/jq/__init__.py +5 -0
  819. just_bash-0.1.2/src/just_bash/commands/jq/jq.py +965 -0
  820. just_bash-0.1.2/src/just_bash/commands/ln/__init__.py +5 -0
  821. just_bash-0.1.2/src/just_bash/commands/ln/ln.py +127 -0
  822. just_bash-0.1.2/src/just_bash/commands/ls/__init__.py +5 -0
  823. just_bash-0.1.2/src/just_bash/commands/ls/ls.py +238 -0
  824. just_bash-0.1.2/src/just_bash/commands/mkdir/__init__.py +5 -0
  825. just_bash-0.1.2/src/just_bash/commands/mkdir/mkdir.py +92 -0
  826. just_bash-0.1.2/src/just_bash/commands/mv/__init__.py +5 -0
  827. just_bash-0.1.2/src/just_bash/commands/mv/mv.py +142 -0
  828. just_bash-0.1.2/src/just_bash/commands/nl/__init__.py +5 -0
  829. just_bash-0.1.2/src/just_bash/commands/nl/nl.py +180 -0
  830. just_bash-0.1.2/src/just_bash/commands/od/__init__.py +5 -0
  831. just_bash-0.1.2/src/just_bash/commands/od/od.py +157 -0
  832. just_bash-0.1.2/src/just_bash/commands/paste/__init__.py +5 -0
  833. just_bash-0.1.2/src/just_bash/commands/paste/paste.py +100 -0
  834. just_bash-0.1.2/src/just_bash/commands/printf/__init__.py +5 -0
  835. just_bash-0.1.2/src/just_bash/commands/printf/printf.py +157 -0
  836. just_bash-0.1.2/src/just_bash/commands/pwd/__init__.py +5 -0
  837. just_bash-0.1.2/src/just_bash/commands/pwd/pwd.py +23 -0
  838. just_bash-0.1.2/src/just_bash/commands/read/__init__.py +5 -0
  839. just_bash-0.1.2/src/just_bash/commands/read/read.py +185 -0
  840. just_bash-0.1.2/src/just_bash/commands/readlink/__init__.py +5 -0
  841. just_bash-0.1.2/src/just_bash/commands/readlink/readlink.py +86 -0
  842. just_bash-0.1.2/src/just_bash/commands/registry.py +834 -0
  843. just_bash-0.1.2/src/just_bash/commands/rev/__init__.py +5 -0
  844. just_bash-0.1.2/src/just_bash/commands/rev/rev.py +74 -0
  845. just_bash-0.1.2/src/just_bash/commands/rg/__init__.py +5 -0
  846. just_bash-0.1.2/src/just_bash/commands/rg/rg.py +1048 -0
  847. just_bash-0.1.2/src/just_bash/commands/rm/__init__.py +5 -0
  848. just_bash-0.1.2/src/just_bash/commands/rm/rm.py +106 -0
  849. just_bash-0.1.2/src/just_bash/commands/sed/__init__.py +5 -0
  850. just_bash-0.1.2/src/just_bash/commands/sed/sed.py +737 -0
  851. just_bash-0.1.2/src/just_bash/commands/seq/__init__.py +5 -0
  852. just_bash-0.1.2/src/just_bash/commands/seq/seq.py +190 -0
  853. just_bash-0.1.2/src/just_bash/commands/shell/__init__.py +5 -0
  854. just_bash-0.1.2/src/just_bash/commands/shell/shell.py +166 -0
  855. just_bash-0.1.2/src/just_bash/commands/sleep/__init__.py +5 -0
  856. just_bash-0.1.2/src/just_bash/commands/sleep/sleep.py +62 -0
  857. just_bash-0.1.2/src/just_bash/commands/sort/__init__.py +5 -0
  858. just_bash-0.1.2/src/just_bash/commands/sort/sort.py +401 -0
  859. just_bash-0.1.2/src/just_bash/commands/split/__init__.py +5 -0
  860. just_bash-0.1.2/src/just_bash/commands/split/split.py +190 -0
  861. just_bash-0.1.2/src/just_bash/commands/sqlite3/__init__.py +5 -0
  862. just_bash-0.1.2/src/just_bash/commands/sqlite3/sqlite3_cmd.py +505 -0
  863. just_bash-0.1.2/src/just_bash/commands/stat/__init__.py +5 -0
  864. just_bash-0.1.2/src/just_bash/commands/stat/stat.py +138 -0
  865. just_bash-0.1.2/src/just_bash/commands/strings/__init__.py +5 -0
  866. just_bash-0.1.2/src/just_bash/commands/strings/strings.py +150 -0
  867. just_bash-0.1.2/src/just_bash/commands/tac/__init__.py +5 -0
  868. just_bash-0.1.2/src/just_bash/commands/tac/tac.py +55 -0
  869. just_bash-0.1.2/src/just_bash/commands/tail/__init__.py +5 -0
  870. just_bash-0.1.2/src/just_bash/commands/tail/tail.py +180 -0
  871. just_bash-0.1.2/src/just_bash/commands/tar/__init__.py +5 -0
  872. just_bash-0.1.2/src/just_bash/commands/tar/tar.py +567 -0
  873. just_bash-0.1.2/src/just_bash/commands/tee/__init__.py +5 -0
  874. just_bash-0.1.2/src/just_bash/commands/tee/tee.py +63 -0
  875. just_bash-0.1.2/src/just_bash/commands/timeout/__init__.py +5 -0
  876. just_bash-0.1.2/src/just_bash/commands/timeout/timeout.py +108 -0
  877. just_bash-0.1.2/src/just_bash/commands/touch/__init__.py +5 -0
  878. just_bash-0.1.2/src/just_bash/commands/touch/touch.py +85 -0
  879. just_bash-0.1.2/src/just_bash/commands/tr/__init__.py +5 -0
  880. just_bash-0.1.2/src/just_bash/commands/tr/tr.py +297 -0
  881. just_bash-0.1.2/src/just_bash/commands/tree/__init__.py +5 -0
  882. just_bash-0.1.2/src/just_bash/commands/tree/tree.py +139 -0
  883. just_bash-0.1.2/src/just_bash/commands/true/__init__.py +5 -0
  884. just_bash-0.1.2/src/just_bash/commands/true/true.py +32 -0
  885. just_bash-0.1.2/src/just_bash/commands/uniq/__init__.py +5 -0
  886. just_bash-0.1.2/src/just_bash/commands/uniq/uniq.py +323 -0
  887. just_bash-0.1.2/src/just_bash/commands/wc/__init__.py +5 -0
  888. just_bash-0.1.2/src/just_bash/commands/wc/wc.py +169 -0
  889. just_bash-0.1.2/src/just_bash/commands/which/__init__.py +5 -0
  890. just_bash-0.1.2/src/just_bash/commands/which/which.py +52 -0
  891. just_bash-0.1.2/src/just_bash/commands/xan/__init__.py +5 -0
  892. just_bash-0.1.2/src/just_bash/commands/xan/xan.py +693 -0
  893. just_bash-0.1.2/src/just_bash/commands/xargs/__init__.py +5 -0
  894. just_bash-0.1.2/src/just_bash/commands/xargs/xargs.py +136 -0
  895. just_bash-0.1.2/src/just_bash/commands/yq/__init__.py +5 -0
  896. just_bash-0.1.2/src/just_bash/commands/yq/yq.py +795 -0
  897. just_bash-0.1.2/src/just_bash/fs/__init__.py +19 -0
  898. just_bash-0.1.2/src/just_bash/fs/in_memory_fs.py +621 -0
  899. just_bash-0.1.2/src/just_bash/interpreter/__init__.py +37 -0
  900. just_bash-0.1.2/src/just_bash/interpreter/builtins/__init__.py +92 -0
  901. just_bash-0.1.2/src/just_bash/interpreter/builtins/alias.py +154 -0
  902. just_bash-0.1.2/src/just_bash/interpreter/builtins/cd.py +76 -0
  903. just_bash-0.1.2/src/just_bash/interpreter/builtins/control.py +127 -0
  904. just_bash-0.1.2/src/just_bash/interpreter/builtins/declare.py +336 -0
  905. just_bash-0.1.2/src/just_bash/interpreter/builtins/export.py +56 -0
  906. just_bash-0.1.2/src/just_bash/interpreter/builtins/let.py +44 -0
  907. just_bash-0.1.2/src/just_bash/interpreter/builtins/local.py +57 -0
  908. just_bash-0.1.2/src/just_bash/interpreter/builtins/mapfile.py +152 -0
  909. just_bash-0.1.2/src/just_bash/interpreter/builtins/misc.py +378 -0
  910. just_bash-0.1.2/src/just_bash/interpreter/builtins/readonly.py +80 -0
  911. just_bash-0.1.2/src/just_bash/interpreter/builtins/set.py +234 -0
  912. just_bash-0.1.2/src/just_bash/interpreter/builtins/shopt.py +201 -0
  913. just_bash-0.1.2/src/just_bash/interpreter/builtins/source.py +136 -0
  914. just_bash-0.1.2/src/just_bash/interpreter/builtins/test.py +290 -0
  915. just_bash-0.1.2/src/just_bash/interpreter/builtins/unset.py +53 -0
  916. just_bash-0.1.2/src/just_bash/interpreter/conditionals.py +387 -0
  917. just_bash-0.1.2/src/just_bash/interpreter/control_flow.py +381 -0
  918. just_bash-0.1.2/src/just_bash/interpreter/errors.py +116 -0
  919. just_bash-0.1.2/src/just_bash/interpreter/expansion.py +1156 -0
  920. just_bash-0.1.2/src/just_bash/interpreter/interpreter.py +813 -0
  921. just_bash-0.1.2/src/just_bash/interpreter/types.py +134 -0
  922. just_bash-0.1.2/src/just_bash/network/__init__.py +1 -0
  923. just_bash-0.1.2/src/just_bash/parser/__init__.py +39 -0
  924. just_bash-0.1.2/src/just_bash/parser/lexer.py +948 -0
  925. just_bash-0.1.2/src/just_bash/parser/parser.py +2162 -0
  926. just_bash-0.1.2/src/just_bash/py.typed +0 -0
  927. just_bash-0.1.2/src/just_bash/types.py +180 -0
  928. just_bash-0.1.2/tests/comparison_tests/__init__.py +1 -0
  929. just_bash-0.1.2/tests/comparison_tests/fixtures/sqlite3_comparison.fixtures.json +114 -0
  930. just_bash-0.1.2/tests/comparison_tests/test_helpers.py +206 -0
  931. just_bash-0.1.2/tests/comparison_tests/test_sqlite3_comparison.py +106 -0
  932. just_bash-0.1.2/tests/conftest.py +13 -0
  933. just_bash-0.1.2/tests/spec_tests/KNOWN_LIMITATIONS.md +415 -0
  934. just_bash-0.1.2/tests/spec_tests/README.md +135 -0
  935. just_bash-0.1.2/tests/spec_tests/__init__.py +13 -0
  936. just_bash-0.1.2/tests/spec_tests/cases/LICENSE-APACHE-2.0.txt +207 -0
  937. just_bash-0.1.2/tests/spec_tests/cases/alias.test.sh +573 -0
  938. just_bash-0.1.2/tests/spec_tests/cases/append.test.sh +324 -0
  939. just_bash-0.1.2/tests/spec_tests/cases/arg-parse.test.sh +52 -0
  940. just_bash-0.1.2/tests/spec_tests/cases/arith-context.test.sh +245 -0
  941. just_bash-0.1.2/tests/spec_tests/cases/arith-dynamic.test.sh +95 -0
  942. just_bash-0.1.2/tests/spec_tests/cases/arith.test.sh +1054 -0
  943. just_bash-0.1.2/tests/spec_tests/cases/array-assign.test.sh +377 -0
  944. just_bash-0.1.2/tests/spec_tests/cases/array-assoc.test.sh +795 -0
  945. just_bash-0.1.2/tests/spec_tests/cases/array-basic.test.sh +45 -0
  946. just_bash-0.1.2/tests/spec_tests/cases/array-compat.test.sh +188 -0
  947. just_bash-0.1.2/tests/spec_tests/cases/array-literal.test.sh +336 -0
  948. just_bash-0.1.2/tests/spec_tests/cases/array-sparse.test.sh +1240 -0
  949. just_bash-0.1.2/tests/spec_tests/cases/array.test.sh +1054 -0
  950. just_bash-0.1.2/tests/spec_tests/cases/assign-deferred.test.sh +115 -0
  951. just_bash-0.1.2/tests/spec_tests/cases/assign-dialects.test.sh +151 -0
  952. just_bash-0.1.2/tests/spec_tests/cases/assign-extended.test.sh +990 -0
  953. just_bash-0.1.2/tests/spec_tests/cases/assign.test.sh +783 -0
  954. just_bash-0.1.2/tests/spec_tests/cases/background.test.sh +425 -0
  955. just_bash-0.1.2/tests/spec_tests/cases/ble-features.test.sh +392 -0
  956. just_bash-0.1.2/tests/spec_tests/cases/ble-idioms.test.sh +576 -0
  957. just_bash-0.1.2/tests/spec_tests/cases/ble-unset.test.sh +248 -0
  958. just_bash-0.1.2/tests/spec_tests/cases/blog-other1.test.sh +66 -0
  959. just_bash-0.1.2/tests/spec_tests/cases/blog1.test.sh +96 -0
  960. just_bash-0.1.2/tests/spec_tests/cases/blog2.test.sh +60 -0
  961. just_bash-0.1.2/tests/spec_tests/cases/bool-parse.test.sh +176 -0
  962. just_bash-0.1.2/tests/spec_tests/cases/brace-expansion.test.sh +507 -0
  963. just_bash-0.1.2/tests/spec_tests/cases/bugs.test.sh +455 -0
  964. just_bash-0.1.2/tests/spec_tests/cases/builtin-bash.test.sh +226 -0
  965. just_bash-0.1.2/tests/spec_tests/cases/builtin-bind.test.sh +159 -0
  966. just_bash-0.1.2/tests/spec_tests/cases/builtin-bracket.test.sh +776 -0
  967. just_bash-0.1.2/tests/spec_tests/cases/builtin-cd.test.sh +532 -0
  968. just_bash-0.1.2/tests/spec_tests/cases/builtin-completion.test.sh +654 -0
  969. just_bash-0.1.2/tests/spec_tests/cases/builtin-dirs.test.sh +261 -0
  970. just_bash-0.1.2/tests/spec_tests/cases/builtin-echo.test.sh +331 -0
  971. just_bash-0.1.2/tests/spec_tests/cases/builtin-eval-source.test.sh +382 -0
  972. just_bash-0.1.2/tests/spec_tests/cases/builtin-fc.test.sh +276 -0
  973. just_bash-0.1.2/tests/spec_tests/cases/builtin-getopts.test.sh +492 -0
  974. just_bash-0.1.2/tests/spec_tests/cases/builtin-history.test.sh +418 -0
  975. just_bash-0.1.2/tests/spec_tests/cases/builtin-kill.test.sh +366 -0
  976. just_bash-0.1.2/tests/spec_tests/cases/builtin-meta-assign.test.sh +377 -0
  977. just_bash-0.1.2/tests/spec_tests/cases/builtin-meta.test.sh +395 -0
  978. just_bash-0.1.2/tests/spec_tests/cases/builtin-misc.test.sh +167 -0
  979. just_bash-0.1.2/tests/spec_tests/cases/builtin-printf.test.sh +1615 -0
  980. just_bash-0.1.2/tests/spec_tests/cases/builtin-process.test.sh +628 -0
  981. just_bash-0.1.2/tests/spec_tests/cases/builtin-read.test.sh +1217 -0
  982. just_bash-0.1.2/tests/spec_tests/cases/builtin-set.test.sh +431 -0
  983. just_bash-0.1.2/tests/spec_tests/cases/builtin-special.test.sh +319 -0
  984. just_bash-0.1.2/tests/spec_tests/cases/builtin-times.test.sh +16 -0
  985. just_bash-0.1.2/tests/spec_tests/cases/builtin-trap-bash.test.sh +661 -0
  986. just_bash-0.1.2/tests/spec_tests/cases/builtin-trap-err.test.sh +651 -0
  987. just_bash-0.1.2/tests/spec_tests/cases/builtin-trap.test.sh +614 -0
  988. just_bash-0.1.2/tests/spec_tests/cases/builtin-type-bash.test.sh +369 -0
  989. just_bash-0.1.2/tests/spec_tests/cases/builtin-type.test.sh +166 -0
  990. just_bash-0.1.2/tests/spec_tests/cases/builtin-vars.test.sh +709 -0
  991. just_bash-0.1.2/tests/spec_tests/cases/case_.test.sh +245 -0
  992. just_bash-0.1.2/tests/spec_tests/cases/command-parsing.test.sh +67 -0
  993. just_bash-0.1.2/tests/spec_tests/cases/command-sub-ksh.test.sh +112 -0
  994. just_bash-0.1.2/tests/spec_tests/cases/command-sub.test.sh +305 -0
  995. just_bash-0.1.2/tests/spec_tests/cases/command_.test.sh +256 -0
  996. just_bash-0.1.2/tests/spec_tests/cases/comments.test.sh +12 -0
  997. just_bash-0.1.2/tests/spec_tests/cases/dbracket.test.sh +493 -0
  998. just_bash-0.1.2/tests/spec_tests/cases/divergence.test.sh +118 -0
  999. just_bash-0.1.2/tests/spec_tests/cases/dparen.test.sh +212 -0
  1000. just_bash-0.1.2/tests/spec_tests/cases/empty-bodies.test.sh +25 -0
  1001. just_bash-0.1.2/tests/spec_tests/cases/errexit.test.sh +539 -0
  1002. just_bash-0.1.2/tests/spec_tests/cases/exit-status.test.sh +324 -0
  1003. just_bash-0.1.2/tests/spec_tests/cases/explore-parsing.test.sh +43 -0
  1004. just_bash-0.1.2/tests/spec_tests/cases/extglob-files.test.sh +407 -0
  1005. just_bash-0.1.2/tests/spec_tests/cases/extglob-match.test.sh +391 -0
  1006. just_bash-0.1.2/tests/spec_tests/cases/fatal-errors.test.sh +192 -0
  1007. just_bash-0.1.2/tests/spec_tests/cases/for-expr.test.sh +173 -0
  1008. just_bash-0.1.2/tests/spec_tests/cases/func-parsing.test.sh +108 -0
  1009. just_bash-0.1.2/tests/spec_tests/cases/glob-bash.test.sh +144 -0
  1010. just_bash-0.1.2/tests/spec_tests/cases/glob.test.sh +420 -0
  1011. just_bash-0.1.2/tests/spec_tests/cases/globignore.test.sh +232 -0
  1012. just_bash-0.1.2/tests/spec_tests/cases/globstar.test.sh +98 -0
  1013. just_bash-0.1.2/tests/spec_tests/cases/here-doc.test.sh +436 -0
  1014. just_bash-0.1.2/tests/spec_tests/cases/if_.test.sh +55 -0
  1015. just_bash-0.1.2/tests/spec_tests/cases/interactive-parse.test.sh +38 -0
  1016. just_bash-0.1.2/tests/spec_tests/cases/interactive.test.sh +418 -0
  1017. just_bash-0.1.2/tests/spec_tests/cases/introspect.test.sh +294 -0
  1018. just_bash-0.1.2/tests/spec_tests/cases/known-differences.test.sh +29 -0
  1019. just_bash-0.1.2/tests/spec_tests/cases/let.test.sh +23 -0
  1020. just_bash-0.1.2/tests/spec_tests/cases/loop.test.sh +627 -0
  1021. just_bash-0.1.2/tests/spec_tests/cases/nameref.test.sh +637 -0
  1022. just_bash-0.1.2/tests/spec_tests/cases/nix-idioms.test.sh +197 -0
  1023. just_bash-0.1.2/tests/spec_tests/cases/nocasematch-match.test.sh +71 -0
  1024. just_bash-0.1.2/tests/spec_tests/cases/nul-bytes.test.sh +530 -0
  1025. just_bash-0.1.2/tests/spec_tests/cases/paren-ambiguity.test.sh +152 -0
  1026. just_bash-0.1.2/tests/spec_tests/cases/parse-errors.test.sh +221 -0
  1027. just_bash-0.1.2/tests/spec_tests/cases/pipeline.test.sh +285 -0
  1028. just_bash-0.1.2/tests/spec_tests/cases/posix.test.sh +162 -0
  1029. just_bash-0.1.2/tests/spec_tests/cases/print-source-code.test.sh +67 -0
  1030. just_bash-0.1.2/tests/spec_tests/cases/process-sub.test.sh +204 -0
  1031. just_bash-0.1.2/tests/spec_tests/cases/prompt.test.sh +353 -0
  1032. just_bash-0.1.2/tests/spec_tests/cases/quote.test.sh +314 -0
  1033. just_bash-0.1.2/tests/spec_tests/cases/redir-order.test.sh +71 -0
  1034. just_bash-0.1.2/tests/spec_tests/cases/redirect-command.test.sh +344 -0
  1035. just_bash-0.1.2/tests/spec_tests/cases/redirect-multi.test.sh +312 -0
  1036. just_bash-0.1.2/tests/spec_tests/cases/redirect.test.sh +639 -0
  1037. just_bash-0.1.2/tests/spec_tests/cases/regex.test.sh +643 -0
  1038. just_bash-0.1.2/tests/spec_tests/cases/serialize.test.sh +239 -0
  1039. just_bash-0.1.2/tests/spec_tests/cases/sh-func.test.sh +186 -0
  1040. just_bash-0.1.2/tests/spec_tests/cases/sh-options-bash.test.sh +155 -0
  1041. just_bash-0.1.2/tests/spec_tests/cases/sh-options.test.sh +771 -0
  1042. just_bash-0.1.2/tests/spec_tests/cases/sh-usage.test.sh +253 -0
  1043. just_bash-0.1.2/tests/spec_tests/cases/shell-bugs.test.sh +36 -0
  1044. just_bash-0.1.2/tests/spec_tests/cases/shell-grammar.test.sh +208 -0
  1045. just_bash-0.1.2/tests/spec_tests/cases/smoke.test.sh +126 -0
  1046. just_bash-0.1.2/tests/spec_tests/cases/spec-harness-bug.test.sh +9 -0
  1047. just_bash-0.1.2/tests/spec_tests/cases/strict-options.test.sh +355 -0
  1048. just_bash-0.1.2/tests/spec_tests/cases/subshell.test.sh +24 -0
  1049. just_bash-0.1.2/tests/spec_tests/cases/temp-binding.test.sh +162 -0
  1050. just_bash-0.1.2/tests/spec_tests/cases/tilde.test.sh +184 -0
  1051. just_bash-0.1.2/tests/spec_tests/cases/toysh-posix.test.sh +403 -0
  1052. just_bash-0.1.2/tests/spec_tests/cases/toysh.test.sh +144 -0
  1053. just_bash-0.1.2/tests/spec_tests/cases/type-compat.test.sh +159 -0
  1054. just_bash-0.1.2/tests/spec_tests/cases/unicode.test.sh +203 -0
  1055. just_bash-0.1.2/tests/spec_tests/cases/var-num.test.sh +45 -0
  1056. just_bash-0.1.2/tests/spec_tests/cases/var-op-bash.test.sh +544 -0
  1057. just_bash-0.1.2/tests/spec_tests/cases/var-op-len.test.sh +273 -0
  1058. just_bash-0.1.2/tests/spec_tests/cases/var-op-patsub.test.sh +415 -0
  1059. just_bash-0.1.2/tests/spec_tests/cases/var-op-slice.test.sh +414 -0
  1060. just_bash-0.1.2/tests/spec_tests/cases/var-op-strip.test.sh +407 -0
  1061. just_bash-0.1.2/tests/spec_tests/cases/var-op-test.test.sh +841 -0
  1062. just_bash-0.1.2/tests/spec_tests/cases/var-ref.test.sh +776 -0
  1063. just_bash-0.1.2/tests/spec_tests/cases/var-sub-quote.test.sh +370 -0
  1064. just_bash-0.1.2/tests/spec_tests/cases/var-sub.test.sh +66 -0
  1065. just_bash-0.1.2/tests/spec_tests/cases/vars-bash.test.sh +32 -0
  1066. just_bash-0.1.2/tests/spec_tests/cases/vars-special.test.sh +810 -0
  1067. just_bash-0.1.2/tests/spec_tests/cases/whitespace.test.sh +119 -0
  1068. just_bash-0.1.2/tests/spec_tests/cases/word-eval.test.sh +67 -0
  1069. just_bash-0.1.2/tests/spec_tests/cases/word-split.test.sh +940 -0
  1070. just_bash-0.1.2/tests/spec_tests/cases/xtrace.test.sh +431 -0
  1071. just_bash-0.1.2/tests/spec_tests/cases/zsh-assoc.test.sh +64 -0
  1072. just_bash-0.1.2/tests/spec_tests/cases/zsh-idioms.test.sh +58 -0
  1073. just_bash-0.1.2/tests/spec_tests/helpers.py +94 -0
  1074. just_bash-0.1.2/tests/spec_tests/parser.py +396 -0
  1075. just_bash-0.1.2/tests/spec_tests/runner.py +282 -0
  1076. just_bash-0.1.2/tests/spec_tests/test_spec.py +197 -0
  1077. just_bash-0.1.2/tests/test_commands/__init__.py +1 -0
  1078. just_bash-0.1.2/tests/test_commands/test_alias.py +202 -0
  1079. just_bash-0.1.2/tests/test_commands/test_awk.py +266 -0
  1080. just_bash-0.1.2/tests/test_commands/test_comm.py +218 -0
  1081. just_bash-0.1.2/tests/test_commands/test_commands.py +5034 -0
  1082. just_bash-0.1.2/tests/test_commands/test_compression.py +249 -0
  1083. just_bash-0.1.2/tests/test_commands/test_file.py +100 -0
  1084. just_bash-0.1.2/tests/test_commands/test_find.py +140 -0
  1085. just_bash-0.1.2/tests/test_commands/test_grep.py +282 -0
  1086. just_bash-0.1.2/tests/test_commands/test_minor_commands.py +198 -0
  1087. just_bash-0.1.2/tests/test_commands/test_rg.py +745 -0
  1088. just_bash-0.1.2/tests/test_commands/test_sed.py +224 -0
  1089. just_bash-0.1.2/tests/test_commands/test_sort.py +142 -0
  1090. just_bash-0.1.2/tests/test_commands/test_sqlite3.py +313 -0
  1091. just_bash-0.1.2/tests/test_commands/test_tar.py +109 -0
  1092. just_bash-0.1.2/tests/test_commands/test_test.py +293 -0
  1093. just_bash-0.1.2/tests/test_commands/test_xargs.py +183 -0
  1094. just_bash-0.1.2/tests/test_fs/__init__.py +1 -0
  1095. just_bash-0.1.2/tests/test_fs/test_in_memory_fs.py +276 -0
  1096. just_bash-0.1.2/tests/test_interpreter/__init__.py +1 -0
  1097. just_bash-0.1.2/tests/test_interpreter/test_expansion.py +195 -0
  1098. just_bash-0.1.2/tests/test_interpreter/test_interpreter.py +340 -0
  1099. just_bash-0.1.2/tests/test_parser/__init__.py +1 -0
  1100. just_bash-0.1.2/tests/test_parser/test_lexer.py +207 -0
  1101. 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 `\$`.
@@ -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
+ [![PyPI version](https://badge.fury.io/py/just-bash.svg)](https://pypi.org/project/just-bash/)
32
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
33
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](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
+ [![PyPI version](https://badge.fury.io/py/just-bash.svg)](https://pypi.org/project/just-bash/)
4
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
5
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](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.