shell-dsl 0.0.7 → 0.0.8

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 (197) hide show
  1. package/README.md +3 -1
  2. package/dist/cjs/index.cjs +14 -4
  3. package/dist/cjs/index.cjs.map +3 -3
  4. package/dist/cjs/package.json +1 -1
  5. package/dist/cjs/src/commands/awk/awk.cjs +276 -0
  6. package/dist/cjs/src/commands/awk/awk.cjs.map +10 -0
  7. package/dist/cjs/src/commands/break-continue/break-continue.cjs +56 -0
  8. package/dist/cjs/src/commands/break-continue/break-continue.cjs.map +10 -0
  9. package/dist/cjs/src/commands/cat/cat.cjs +57 -0
  10. package/dist/cjs/src/commands/cat/cat.cjs.map +10 -0
  11. package/dist/cjs/src/commands/cp/cp.cjs +126 -0
  12. package/dist/cjs/src/commands/cp/cp.cjs.map +10 -0
  13. package/dist/cjs/src/commands/echo/echo.cjs +50 -0
  14. package/dist/cjs/src/commands/echo/echo.cjs.map +10 -0
  15. package/dist/cjs/src/commands/find/find.cjs +251 -0
  16. package/dist/cjs/src/commands/find/find.cjs.map +10 -0
  17. package/dist/cjs/src/commands/grep/grep.cjs +510 -0
  18. package/dist/cjs/src/commands/grep/grep.cjs.map +10 -0
  19. package/dist/cjs/src/commands/head/head.cjs +95 -0
  20. package/dist/cjs/src/commands/head/head.cjs.map +10 -0
  21. package/dist/cjs/src/commands/index.cjs +136 -0
  22. package/dist/cjs/src/commands/index.cjs.map +10 -0
  23. package/dist/cjs/src/commands/ls/ls.cjs +119 -0
  24. package/dist/cjs/src/commands/ls/ls.cjs.map +10 -0
  25. package/dist/cjs/src/commands/mkdir/mkdir.cjs +64 -0
  26. package/dist/cjs/src/commands/mkdir/mkdir.cjs.map +10 -0
  27. package/dist/cjs/src/commands/mv/mv.cjs +118 -0
  28. package/dist/cjs/src/commands/mv/mv.cjs.map +10 -0
  29. package/dist/cjs/src/commands/pwd/pwd.cjs +41 -0
  30. package/dist/cjs/src/commands/pwd/pwd.cjs.map +10 -0
  31. package/dist/cjs/src/commands/rm/rm.cjs +82 -0
  32. package/dist/cjs/src/commands/rm/rm.cjs.map +10 -0
  33. package/dist/cjs/src/commands/sed/sed.cjs +218 -0
  34. package/dist/cjs/src/commands/sed/sed.cjs.map +10 -0
  35. package/dist/cjs/src/commands/sort/sort.cjs +105 -0
  36. package/dist/cjs/src/commands/sort/sort.cjs.map +10 -0
  37. package/dist/cjs/src/commands/tail/tail.cjs +95 -0
  38. package/dist/cjs/src/commands/tail/tail.cjs.map +10 -0
  39. package/dist/cjs/src/commands/tee/tee.cjs +65 -0
  40. package/dist/cjs/src/commands/tee/tee.cjs.map +10 -0
  41. package/dist/cjs/src/commands/test/test.cjs +148 -0
  42. package/dist/cjs/src/commands/test/test.cjs.map +10 -0
  43. package/dist/cjs/src/commands/touch/touch.cjs +70 -0
  44. package/dist/cjs/src/commands/touch/touch.cjs.map +10 -0
  45. package/dist/cjs/src/commands/tree/tree.cjs +161 -0
  46. package/dist/cjs/src/commands/tree/tree.cjs.map +10 -0
  47. package/dist/cjs/src/commands/true-false/true-false.cjs +43 -0
  48. package/dist/cjs/src/commands/true-false/true-false.cjs.map +10 -0
  49. package/dist/cjs/src/commands/uniq/uniq.cjs +116 -0
  50. package/dist/cjs/src/commands/uniq/uniq.cjs.map +10 -0
  51. package/dist/cjs/src/commands/wc/wc.cjs +116 -0
  52. package/dist/cjs/src/commands/wc/wc.cjs.map +10 -0
  53. package/dist/cjs/src/index.cjs +10 -2
  54. package/dist/cjs/src/index.cjs.map +3 -3
  55. package/dist/cjs/src/interpreter/index.cjs +4 -2
  56. package/dist/cjs/src/interpreter/index.cjs.map +3 -3
  57. package/dist/cjs/src/interpreter/interpreter.cjs +381 -2
  58. package/dist/cjs/src/interpreter/interpreter.cjs.map +3 -3
  59. package/dist/cjs/src/lexer/index.cjs +3 -2
  60. package/dist/cjs/src/lexer/index.cjs.map +3 -3
  61. package/dist/cjs/src/lexer/lexer.cjs +202 -7
  62. package/dist/cjs/src/lexer/lexer.cjs.map +3 -3
  63. package/dist/cjs/src/lexer/tokens.cjs +31 -2
  64. package/dist/cjs/src/lexer/tokens.cjs.map +3 -3
  65. package/dist/cjs/src/parser/ast.cjs +25 -1
  66. package/dist/cjs/src/parser/ast.cjs.map +3 -3
  67. package/dist/cjs/src/parser/index.cjs +7 -1
  68. package/dist/cjs/src/parser/index.cjs.map +3 -3
  69. package/dist/cjs/src/parser/parser.cjs +211 -7
  70. package/dist/cjs/src/parser/parser.cjs.map +3 -3
  71. package/dist/cjs/src/shell-dsl.cjs +2 -2
  72. package/dist/cjs/src/shell-dsl.cjs.map +3 -3
  73. package/dist/mjs/index.mjs +25 -5
  74. package/dist/mjs/index.mjs.map +3 -3
  75. package/dist/mjs/package.json +1 -1
  76. package/dist/mjs/src/commands/awk/awk.mjs +246 -0
  77. package/dist/mjs/src/commands/awk/awk.mjs.map +10 -0
  78. package/dist/mjs/src/commands/break-continue/break-continue.mjs +26 -0
  79. package/dist/mjs/src/commands/break-continue/break-continue.mjs.map +10 -0
  80. package/dist/mjs/src/commands/cat/cat.mjs +27 -0
  81. package/dist/mjs/src/commands/cat/cat.mjs.map +10 -0
  82. package/dist/mjs/src/commands/cp/cp.mjs +96 -0
  83. package/dist/mjs/src/commands/cp/cp.mjs.map +10 -0
  84. package/dist/mjs/src/commands/echo/echo.mjs +20 -0
  85. package/dist/mjs/src/commands/echo/echo.mjs.map +10 -0
  86. package/dist/mjs/src/commands/find/find.mjs +221 -0
  87. package/dist/mjs/src/commands/find/find.mjs.map +10 -0
  88. package/dist/mjs/src/commands/grep/grep.mjs +480 -0
  89. package/dist/mjs/src/commands/grep/grep.mjs.map +10 -0
  90. package/dist/mjs/src/commands/head/head.mjs +65 -0
  91. package/dist/mjs/src/commands/head/head.mjs.map +10 -0
  92. package/dist/mjs/src/commands/index.mjs +106 -0
  93. package/dist/mjs/src/commands/index.mjs.map +10 -0
  94. package/dist/mjs/src/commands/ls/ls.mjs +89 -0
  95. package/dist/mjs/src/commands/ls/ls.mjs.map +10 -0
  96. package/dist/mjs/src/commands/mkdir/mkdir.mjs +34 -0
  97. package/dist/mjs/src/commands/mkdir/mkdir.mjs.map +10 -0
  98. package/dist/mjs/src/commands/mv/mv.mjs +88 -0
  99. package/dist/mjs/src/commands/mv/mv.mjs.map +10 -0
  100. package/dist/mjs/src/commands/pwd/pwd.mjs +11 -0
  101. package/dist/mjs/src/commands/pwd/pwd.mjs.map +10 -0
  102. package/dist/mjs/src/commands/rm/rm.mjs +52 -0
  103. package/dist/mjs/src/commands/rm/rm.mjs.map +10 -0
  104. package/dist/mjs/src/commands/sed/sed.mjs +188 -0
  105. package/dist/mjs/src/commands/sed/sed.mjs.map +10 -0
  106. package/dist/mjs/src/commands/sort/sort.mjs +75 -0
  107. package/dist/mjs/src/commands/sort/sort.mjs.map +10 -0
  108. package/dist/mjs/src/commands/tail/tail.mjs +65 -0
  109. package/dist/mjs/src/commands/tail/tail.mjs.map +10 -0
  110. package/dist/mjs/src/commands/tee/tee.mjs +35 -0
  111. package/dist/mjs/src/commands/tee/tee.mjs.map +10 -0
  112. package/dist/mjs/src/commands/test/test.mjs +118 -0
  113. package/dist/mjs/src/commands/test/test.mjs.map +10 -0
  114. package/dist/mjs/src/commands/touch/touch.mjs +40 -0
  115. package/dist/mjs/src/commands/touch/touch.mjs.map +10 -0
  116. package/dist/mjs/src/commands/tree/tree.mjs +131 -0
  117. package/dist/mjs/src/commands/tree/tree.mjs.map +10 -0
  118. package/dist/mjs/src/commands/true-false/true-false.mjs +13 -0
  119. package/dist/mjs/src/commands/true-false/true-false.mjs.map +10 -0
  120. package/dist/mjs/src/commands/uniq/uniq.mjs +86 -0
  121. package/dist/mjs/src/commands/uniq/uniq.mjs.map +10 -0
  122. package/dist/mjs/src/commands/wc/wc.mjs +86 -0
  123. package/dist/mjs/src/commands/wc/wc.mjs.map +10 -0
  124. package/dist/mjs/src/index.mjs +18 -4
  125. package/dist/mjs/src/index.mjs.map +3 -3
  126. package/dist/mjs/src/interpreter/index.mjs +5 -3
  127. package/dist/mjs/src/interpreter/index.mjs.map +2 -2
  128. package/dist/mjs/src/interpreter/interpreter.mjs +381 -2
  129. package/dist/mjs/src/interpreter/interpreter.mjs.map +3 -3
  130. package/dist/mjs/src/lexer/index.mjs +4 -3
  131. package/dist/mjs/src/lexer/index.mjs.map +2 -2
  132. package/dist/mjs/src/lexer/lexer.mjs +202 -7
  133. package/dist/mjs/src/lexer/lexer.mjs.map +3 -3
  134. package/dist/mjs/src/lexer/tokens.mjs +31 -2
  135. package/dist/mjs/src/lexer/tokens.mjs.map +3 -3
  136. package/dist/mjs/src/parser/ast.mjs +25 -1
  137. package/dist/mjs/src/parser/ast.mjs.map +3 -3
  138. package/dist/mjs/src/parser/index.mjs +14 -2
  139. package/dist/mjs/src/parser/index.mjs.map +3 -3
  140. package/dist/mjs/src/parser/parser.mjs +211 -7
  141. package/dist/mjs/src/parser/parser.mjs.map +3 -3
  142. package/dist/mjs/src/shell-dsl.mjs +2 -2
  143. package/dist/mjs/src/shell-dsl.mjs.map +3 -3
  144. package/dist/types/index.d.ts +2 -2
  145. package/dist/types/src/commands/awk/awk.d.ts +2 -0
  146. package/dist/types/src/commands/break-continue/break-continue.d.ts +3 -0
  147. package/dist/types/src/commands/cat/cat.d.ts +2 -0
  148. package/dist/types/src/commands/cp/cp.d.ts +2 -0
  149. package/dist/types/src/commands/echo/echo.d.ts +2 -0
  150. package/dist/types/src/commands/find/find.d.ts +2 -0
  151. package/dist/types/src/commands/grep/grep.d.ts +2 -0
  152. package/dist/types/src/commands/head/head.d.ts +2 -0
  153. package/dist/types/src/commands/index.d.ts +25 -0
  154. package/dist/types/src/commands/ls/ls.d.ts +2 -0
  155. package/dist/types/src/commands/mkdir/mkdir.d.ts +2 -0
  156. package/dist/types/src/commands/mv/mv.d.ts +2 -0
  157. package/dist/types/src/commands/pwd/pwd.d.ts +2 -0
  158. package/dist/types/src/commands/rm/rm.d.ts +2 -0
  159. package/dist/types/src/commands/sed/sed.d.ts +2 -0
  160. package/dist/types/src/commands/sort/sort.d.ts +2 -0
  161. package/dist/types/src/commands/tail/tail.d.ts +2 -0
  162. package/dist/types/src/commands/tee/tee.d.ts +2 -0
  163. package/dist/types/{commands → src/commands/test}/test.d.ts +1 -1
  164. package/dist/types/src/commands/touch/touch.d.ts +2 -0
  165. package/dist/types/src/commands/tree/tree.d.ts +2 -0
  166. package/dist/types/{commands → src/commands/true-false}/true-false.d.ts +1 -1
  167. package/dist/types/src/commands/uniq/uniq.d.ts +2 -0
  168. package/dist/types/src/commands/wc/wc.d.ts +2 -0
  169. package/dist/types/src/index.d.ts +3 -3
  170. package/dist/types/src/interpreter/index.d.ts +1 -1
  171. package/dist/types/src/interpreter/interpreter.d.ts +18 -0
  172. package/dist/types/src/lexer/index.d.ts +2 -2
  173. package/dist/types/src/lexer/lexer.d.ts +11 -2
  174. package/dist/types/src/lexer/tokens.d.ts +16 -0
  175. package/dist/types/src/parser/ast.d.ts +46 -1
  176. package/dist/types/src/parser/index.d.ts +2 -2
  177. package/dist/types/src/parser/parser.d.ts +14 -0
  178. package/package.json +1 -1
  179. package/dist/types/commands/cat.d.ts +0 -2
  180. package/dist/types/commands/cp.d.ts +0 -2
  181. package/dist/types/commands/echo.d.ts +0 -2
  182. package/dist/types/commands/find.d.ts +0 -2
  183. package/dist/types/commands/grep.d.ts +0 -2
  184. package/dist/types/commands/head.d.ts +0 -2
  185. package/dist/types/commands/index.d.ts +0 -22
  186. package/dist/types/commands/ls.d.ts +0 -2
  187. package/dist/types/commands/mkdir.d.ts +0 -2
  188. package/dist/types/commands/mv.d.ts +0 -2
  189. package/dist/types/commands/pwd.d.ts +0 -2
  190. package/dist/types/commands/rm.d.ts +0 -2
  191. package/dist/types/commands/sort.d.ts +0 -2
  192. package/dist/types/commands/tail.d.ts +0 -2
  193. package/dist/types/commands/tee.d.ts +0 -2
  194. package/dist/types/commands/touch.d.ts +0 -2
  195. package/dist/types/commands/tree.d.ts +0 -2
  196. package/dist/types/commands/uniq.d.ts +0 -2
  197. package/dist/types/commands/wc.d.ts +0 -2
@@ -0,0 +1,106 @@
1
+ // src/commands/index.ts
2
+ import { echo } from "./echo/echo.mjs";
3
+ import { cat } from "./cat/cat.mjs";
4
+ import { grep } from "./grep/grep.mjs";
5
+ import { wc } from "./wc/wc.mjs";
6
+ import { head } from "./head/head.mjs";
7
+ import { tail } from "./tail/tail.mjs";
8
+ import { sort } from "./sort/sort.mjs";
9
+ import { uniq } from "./uniq/uniq.mjs";
10
+ import { pwd } from "./pwd/pwd.mjs";
11
+ import { ls } from "./ls/ls.mjs";
12
+ import { mkdir } from "./mkdir/mkdir.mjs";
13
+ import { rm } from "./rm/rm.mjs";
14
+ import { test, bracket } from "./test/test.mjs";
15
+ import { trueCmd, falseCmd } from "./true-false/true-false.mjs";
16
+ import { touch } from "./touch/touch.mjs";
17
+ import { cp } from "./cp/cp.mjs";
18
+ import { mv } from "./mv/mv.mjs";
19
+ import { tee } from "./tee/tee.mjs";
20
+ import { tree } from "./tree/tree.mjs";
21
+ import { find } from "./find/find.mjs";
22
+ import { sed } from "./sed/sed.mjs";
23
+ import { awk } from "./awk/awk.mjs";
24
+ import { breakCmd, continueCmd } from "./break-continue/break-continue.mjs";
25
+ import { echo as echo2 } from "./echo/echo.mjs";
26
+ import { cat as cat2 } from "./cat/cat.mjs";
27
+ import { grep as grep2 } from "./grep/grep.mjs";
28
+ import { wc as wc2 } from "./wc/wc.mjs";
29
+ import { head as head2 } from "./head/head.mjs";
30
+ import { tail as tail2 } from "./tail/tail.mjs";
31
+ import { sort as sort2 } from "./sort/sort.mjs";
32
+ import { uniq as uniq2 } from "./uniq/uniq.mjs";
33
+ import { pwd as pwd2 } from "./pwd/pwd.mjs";
34
+ import { ls as ls2 } from "./ls/ls.mjs";
35
+ import { mkdir as mkdir2 } from "./mkdir/mkdir.mjs";
36
+ import { rm as rm2 } from "./rm/rm.mjs";
37
+ import { test as test2, bracket as bracket2 } from "./test/test.mjs";
38
+ import { trueCmd as trueCmd2, falseCmd as falseCmd2 } from "./true-false/true-false.mjs";
39
+ import { touch as touch2 } from "./touch/touch.mjs";
40
+ import { cp as cp2 } from "./cp/cp.mjs";
41
+ import { mv as mv2 } from "./mv/mv.mjs";
42
+ import { tee as tee2 } from "./tee/tee.mjs";
43
+ import { tree as tree2 } from "./tree/tree.mjs";
44
+ import { find as find2 } from "./find/find.mjs";
45
+ import { sed as sed2 } from "./sed/sed.mjs";
46
+ import { awk as awk2 } from "./awk/awk.mjs";
47
+ import { breakCmd as breakCmd2, continueCmd as continueCmd2 } from "./break-continue/break-continue.mjs";
48
+ var builtinCommands = {
49
+ echo: echo2,
50
+ cat: cat2,
51
+ grep: grep2,
52
+ wc: wc2,
53
+ head: head2,
54
+ tail: tail2,
55
+ sort: sort2,
56
+ uniq: uniq2,
57
+ pwd: pwd2,
58
+ ls: ls2,
59
+ mkdir: mkdir2,
60
+ rm: rm2,
61
+ test: test2,
62
+ "[": bracket2,
63
+ true: trueCmd2,
64
+ false: falseCmd2,
65
+ touch: touch2,
66
+ cp: cp2,
67
+ mv: mv2,
68
+ tee: tee2,
69
+ tree: tree2,
70
+ find: find2,
71
+ sed: sed2,
72
+ awk: awk2,
73
+ break: breakCmd2,
74
+ continue: continueCmd2
75
+ };
76
+ export {
77
+ wc,
78
+ uniq,
79
+ trueCmd,
80
+ tree,
81
+ touch,
82
+ test,
83
+ tee,
84
+ tail,
85
+ sort,
86
+ sed,
87
+ rm,
88
+ pwd,
89
+ mv,
90
+ mkdir,
91
+ ls,
92
+ head,
93
+ grep,
94
+ find,
95
+ falseCmd,
96
+ echo,
97
+ cp,
98
+ continueCmd,
99
+ cat,
100
+ builtinCommands,
101
+ breakCmd,
102
+ bracket,
103
+ awk
104
+ };
105
+
106
+ //# debugId=217BED32E3D4B36564756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/commands/index.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../types.mjs\";\n\nexport { echo } from \"./echo/echo.mjs\";\nexport { cat } from \"./cat/cat.mjs\";\nexport { grep } from \"./grep/grep.mjs\";\nexport { wc } from \"./wc/wc.mjs\";\nexport { head } from \"./head/head.mjs\";\nexport { tail } from \"./tail/tail.mjs\";\nexport { sort } from \"./sort/sort.mjs\";\nexport { uniq } from \"./uniq/uniq.mjs\";\nexport { pwd } from \"./pwd/pwd.mjs\";\nexport { ls } from \"./ls/ls.mjs\";\nexport { mkdir } from \"./mkdir/mkdir.mjs\";\nexport { rm } from \"./rm/rm.mjs\";\nexport { test, bracket } from \"./test/test.mjs\";\nexport { trueCmd, falseCmd } from \"./true-false/true-false.mjs\";\nexport { touch } from \"./touch/touch.mjs\";\nexport { cp } from \"./cp/cp.mjs\";\nexport { mv } from \"./mv/mv.mjs\";\nexport { tee } from \"./tee/tee.mjs\";\nexport { tree } from \"./tree/tree.mjs\";\nexport { find } from \"./find/find.mjs\";\nexport { sed } from \"./sed/sed.mjs\";\nexport { awk } from \"./awk/awk.mjs\";\nexport { breakCmd, continueCmd } from \"./break-continue/break-continue.mjs\";\n\n// Re-export all commands as a bundle\nimport { echo } from \"./echo/echo.mjs\";\nimport { cat } from \"./cat/cat.mjs\";\nimport { grep } from \"./grep/grep.mjs\";\nimport { wc } from \"./wc/wc.mjs\";\nimport { head } from \"./head/head.mjs\";\nimport { tail } from \"./tail/tail.mjs\";\nimport { sort } from \"./sort/sort.mjs\";\nimport { uniq } from \"./uniq/uniq.mjs\";\nimport { pwd } from \"./pwd/pwd.mjs\";\nimport { ls } from \"./ls/ls.mjs\";\nimport { mkdir } from \"./mkdir/mkdir.mjs\";\nimport { rm } from \"./rm/rm.mjs\";\nimport { test, bracket } from \"./test/test.mjs\";\nimport { trueCmd, falseCmd } from \"./true-false/true-false.mjs\";\nimport { touch } from \"./touch/touch.mjs\";\nimport { cp } from \"./cp/cp.mjs\";\nimport { mv } from \"./mv/mv.mjs\";\nimport { tee } from \"./tee/tee.mjs\";\nimport { tree } from \"./tree/tree.mjs\";\nimport { find } from \"./find/find.mjs\";\nimport { sed } from \"./sed/sed.mjs\";\nimport { awk } from \"./awk/awk.mjs\";\nimport { breakCmd, continueCmd } from \"./break-continue/break-continue.mjs\";\n\nexport const builtinCommands: Record<string, Command> = {\n echo,\n cat,\n grep,\n wc,\n head,\n tail,\n sort,\n uniq,\n pwd,\n ls,\n mkdir,\n rm,\n test,\n \"[\": bracket,\n true: trueCmd,\n false: falseCmd,\n touch,\n cp,\n mv,\n tee,\n tree,\n find,\n sed,\n awk,\n break: breakCmd,\n continue: continueCmd,\n};\n"
6
+ ],
7
+ "mappings": ";AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,iBAAS;AACT,gBAAS;AACT,iBAAS;AACT,eAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,gBAAS;AACT,eAAS;AACT,kBAAS;AACT,eAAS;AACT,iBAAS,kBAAM;AACf,oBAAS,sBAAS;AAClB,kBAAS;AACT,eAAS;AACT,eAAS;AACT,gBAAS;AACT,iBAAS;AACT,iBAAS;AACT,gBAAS;AACT,gBAAS;AACT,qBAAS,0BAAU;AAEZ,IAAM,kBAA2C;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AACZ;",
8
+ "debugId": "217BED32E3D4B36564756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,89 @@
1
+ // src/commands/ls/ls.ts
2
+ var ls = async (ctx) => {
3
+ let showAll = false;
4
+ let longFormat = false;
5
+ let onePerLine = false;
6
+ const paths = [];
7
+ for (const arg of ctx.args) {
8
+ if (arg === "-a" || arg === "--all") {
9
+ showAll = true;
10
+ } else if (arg === "-l") {
11
+ longFormat = true;
12
+ } else if (arg === "-1") {
13
+ onePerLine = true;
14
+ } else if (arg.startsWith("-")) {
15
+ for (const flag of arg.slice(1)) {
16
+ if (flag === "a")
17
+ showAll = true;
18
+ else if (flag === "l")
19
+ longFormat = true;
20
+ else if (flag === "1")
21
+ onePerLine = true;
22
+ }
23
+ } else {
24
+ paths.push(arg);
25
+ }
26
+ }
27
+ if (paths.length === 0) {
28
+ paths.push(".");
29
+ }
30
+ for (let i = 0;i < paths.length; i++) {
31
+ const pathArg = paths[i];
32
+ const path = ctx.fs.resolve(ctx.cwd, pathArg);
33
+ try {
34
+ const stat = await ctx.fs.stat(path);
35
+ if (stat.isFile()) {
36
+ await ctx.stdout.writeText(ctx.fs.basename(path) + `
37
+ `);
38
+ continue;
39
+ }
40
+ if (paths.length > 1) {
41
+ if (i > 0)
42
+ await ctx.stdout.writeText(`
43
+ `);
44
+ await ctx.stdout.writeText(`${pathArg}:
45
+ `);
46
+ }
47
+ let entries = await ctx.fs.readdir(path);
48
+ if (!showAll) {
49
+ entries = entries.filter((e) => !e.startsWith("."));
50
+ }
51
+ entries.sort();
52
+ if (longFormat) {
53
+ for (const entry of entries) {
54
+ const entryPath = ctx.fs.resolve(path, entry);
55
+ try {
56
+ const entryStat = await ctx.fs.stat(entryPath);
57
+ const type = entryStat.isDirectory() ? "d" : "-";
58
+ const perms = "rwxr-xr-x";
59
+ const size = String(entryStat.size).padStart(8);
60
+ const date = entryStat.mtime.toISOString().slice(0, 10);
61
+ await ctx.stdout.writeText(`${type}${perms} ${size} ${date} ${entry}
62
+ `);
63
+ } catch {
64
+ await ctx.stdout.writeText(`?????????? ${entry}
65
+ `);
66
+ }
67
+ }
68
+ } else if (onePerLine) {
69
+ for (const entry of entries) {
70
+ await ctx.stdout.writeText(entry + `
71
+ `);
72
+ }
73
+ } else {
74
+ await ctx.stdout.writeText(entries.join(" ") + `
75
+ `);
76
+ }
77
+ } catch (err) {
78
+ await ctx.stderr.writeText(`ls: cannot access '${pathArg}': No such file or directory
79
+ `);
80
+ return 1;
81
+ }
82
+ }
83
+ return 0;
84
+ };
85
+ export {
86
+ ls
87
+ };
88
+
89
+ //# debugId=322ADB729375592364756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/commands/ls/ls.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../../types.mjs\";\n\nexport const ls: Command = async (ctx) => {\n let showAll = false;\n let longFormat = false;\n let onePerLine = false;\n const paths: string[] = [];\n\n // Parse arguments\n for (const arg of ctx.args) {\n if (arg === \"-a\" || arg === \"--all\") {\n showAll = true;\n } else if (arg === \"-l\") {\n longFormat = true;\n } else if (arg === \"-1\") {\n onePerLine = true;\n } else if (arg.startsWith(\"-\")) {\n for (const flag of arg.slice(1)) {\n if (flag === \"a\") showAll = true;\n else if (flag === \"l\") longFormat = true;\n else if (flag === \"1\") onePerLine = true;\n }\n } else {\n paths.push(arg);\n }\n }\n\n if (paths.length === 0) {\n paths.push(\".\");\n }\n\n for (let i = 0; i < paths.length; i++) {\n const pathArg = paths[i]!;\n const path = ctx.fs.resolve(ctx.cwd, pathArg);\n\n try {\n const stat = await ctx.fs.stat(path);\n\n if (stat.isFile()) {\n // It's a file, just print the name\n await ctx.stdout.writeText(ctx.fs.basename(path) + \"\\n\");\n continue;\n }\n\n // It's a directory\n if (paths.length > 1) {\n if (i > 0) await ctx.stdout.writeText(\"\\n\");\n await ctx.stdout.writeText(`${pathArg}:\\n`);\n }\n\n let entries = await ctx.fs.readdir(path);\n\n if (!showAll) {\n entries = entries.filter((e) => !e.startsWith(\".\"));\n }\n\n entries.sort();\n\n if (longFormat) {\n for (const entry of entries) {\n const entryPath = ctx.fs.resolve(path, entry);\n try {\n const entryStat = await ctx.fs.stat(entryPath);\n const type = entryStat.isDirectory() ? \"d\" : \"-\";\n const perms = \"rwxr-xr-x\"; // Simplified permissions\n const size = String(entryStat.size).padStart(8);\n const date = entryStat.mtime.toISOString().slice(0, 10);\n await ctx.stdout.writeText(`${type}${perms} ${size} ${date} ${entry}\\n`);\n } catch {\n await ctx.stdout.writeText(`?????????? ${entry}\\n`);\n }\n }\n } else if (onePerLine) {\n for (const entry of entries) {\n await ctx.stdout.writeText(entry + \"\\n\");\n }\n } else {\n // Default: space-separated\n await ctx.stdout.writeText(entries.join(\" \") + \"\\n\");\n }\n } catch (err) {\n await ctx.stderr.writeText(`ls: cannot access '${pathArg}': No such file or directory\\n`);\n return 1;\n }\n }\n\n return 0;\n};\n"
6
+ ],
7
+ "mappings": ";AAEO,IAAM,KAAc,OAAO,QAAQ;AAAA,EACxC,IAAI,UAAU;AAAA,EACd,IAAI,aAAa;AAAA,EACjB,IAAI,aAAa;AAAA,EACjB,MAAM,QAAkB,CAAC;AAAA,EAGzB,WAAW,OAAO,IAAI,MAAM;AAAA,IAC1B,IAAI,QAAQ,QAAQ,QAAQ,SAAS;AAAA,MACnC,UAAU;AAAA,IACZ,EAAO,SAAI,QAAQ,MAAM;AAAA,MACvB,aAAa;AAAA,IACf,EAAO,SAAI,QAAQ,MAAM;AAAA,MACvB,aAAa;AAAA,IACf,EAAO,SAAI,IAAI,WAAW,GAAG,GAAG;AAAA,MAC9B,WAAW,QAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,QAC/B,IAAI,SAAS;AAAA,UAAK,UAAU;AAAA,QACvB,SAAI,SAAS;AAAA,UAAK,aAAa;AAAA,QAC/B,SAAI,SAAS;AAAA,UAAK,aAAa;AAAA,MACtC;AAAA,IACF,EAAO;AAAA,MACL,MAAM,KAAK,GAAG;AAAA;AAAA,EAElB;AAAA,EAEA,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,KAAK,GAAG;AAAA,EAChB;AAAA,EAEA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,OAAO,IAAI,GAAG,QAAQ,IAAI,KAAK,OAAO;AAAA,IAE5C,IAAI;AAAA,MACF,MAAM,OAAO,MAAM,IAAI,GAAG,KAAK,IAAI;AAAA,MAEnC,IAAI,KAAK,OAAO,GAAG;AAAA,QAEjB,MAAM,IAAI,OAAO,UAAU,IAAI,GAAG,SAAS,IAAI,IAAI;AAAA,CAAI;AAAA,QACvD;AAAA,MACF;AAAA,MAGA,IAAI,MAAM,SAAS,GAAG;AAAA,QACpB,IAAI,IAAI;AAAA,UAAG,MAAM,IAAI,OAAO,UAAU;AAAA,CAAI;AAAA,QAC1C,MAAM,IAAI,OAAO,UAAU,GAAG;AAAA,CAAY;AAAA,MAC5C;AAAA,MAEA,IAAI,UAAU,MAAM,IAAI,GAAG,QAAQ,IAAI;AAAA,MAEvC,IAAI,CAAC,SAAS;AAAA,QACZ,UAAU,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AAAA,MACpD;AAAA,MAEA,QAAQ,KAAK;AAAA,MAEb,IAAI,YAAY;AAAA,QACd,WAAW,SAAS,SAAS;AAAA,UAC3B,MAAM,YAAY,IAAI,GAAG,QAAQ,MAAM,KAAK;AAAA,UAC5C,IAAI;AAAA,YACF,MAAM,YAAY,MAAM,IAAI,GAAG,KAAK,SAAS;AAAA,YAC7C,MAAM,OAAO,UAAU,YAAY,IAAI,MAAM;AAAA,YAC7C,MAAM,QAAQ;AAAA,YACd,MAAM,OAAO,OAAO,UAAU,IAAI,EAAE,SAAS,CAAC;AAAA,YAC9C,MAAM,OAAO,UAAU,MAAM,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,YACtD,MAAM,IAAI,OAAO,UAAU,GAAG,OAAO,SAAS,QAAQ,QAAQ;AAAA,CAAS;AAAA,YACvE,MAAM;AAAA,YACN,MAAM,IAAI,OAAO,UAAU,cAAc;AAAA,CAAS;AAAA;AAAA,QAEtD;AAAA,MACF,EAAO,SAAI,YAAY;AAAA,QACrB,WAAW,SAAS,SAAS;AAAA,UAC3B,MAAM,IAAI,OAAO,UAAU,QAAQ;AAAA,CAAI;AAAA,QACzC;AAAA,MACF,EAAO;AAAA,QAEL,MAAM,IAAI,OAAO,UAAU,QAAQ,KAAK,IAAI,IAAI;AAAA,CAAI;AAAA;AAAA,MAEtD,OAAO,KAAK;AAAA,MACZ,MAAM,IAAI,OAAO,UAAU,sBAAsB;AAAA,CAAuC;AAAA,MACxF,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO;AAAA;",
8
+ "debugId": "322ADB729375592364756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,34 @@
1
+ // src/commands/mkdir/mkdir.ts
2
+ var mkdir = async (ctx) => {
3
+ let parents = false;
4
+ const dirs = [];
5
+ for (const arg of ctx.args) {
6
+ if (arg === "-p" || arg === "--parents") {
7
+ parents = true;
8
+ } else if (!arg.startsWith("-")) {
9
+ dirs.push(arg);
10
+ }
11
+ }
12
+ if (dirs.length === 0) {
13
+ await ctx.stderr.writeText(`mkdir: missing operand
14
+ `);
15
+ return 1;
16
+ }
17
+ for (const dir of dirs) {
18
+ const path = ctx.fs.resolve(ctx.cwd, dir);
19
+ try {
20
+ await ctx.fs.mkdir(path, { recursive: parents });
21
+ } catch (err) {
22
+ const message = err instanceof Error ? err.message : String(err);
23
+ await ctx.stderr.writeText(`mkdir: cannot create directory '${dir}': ${message}
24
+ `);
25
+ return 1;
26
+ }
27
+ }
28
+ return 0;
29
+ };
30
+ export {
31
+ mkdir
32
+ };
33
+
34
+ //# debugId=43C20439FAB30DFD64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/commands/mkdir/mkdir.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../../types.mjs\";\n\nexport const mkdir: Command = async (ctx) => {\n let parents = false;\n const dirs: string[] = [];\n\n for (const arg of ctx.args) {\n if (arg === \"-p\" || arg === \"--parents\") {\n parents = true;\n } else if (!arg.startsWith(\"-\")) {\n dirs.push(arg);\n }\n }\n\n if (dirs.length === 0) {\n await ctx.stderr.writeText(\"mkdir: missing operand\\n\");\n return 1;\n }\n\n for (const dir of dirs) {\n const path = ctx.fs.resolve(ctx.cwd, dir);\n try {\n await ctx.fs.mkdir(path, { recursive: parents });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n await ctx.stderr.writeText(`mkdir: cannot create directory '${dir}': ${message}\\n`);\n return 1;\n }\n }\n\n return 0;\n};\n"
6
+ ],
7
+ "mappings": ";AAEO,IAAM,QAAiB,OAAO,QAAQ;AAAA,EAC3C,IAAI,UAAU;AAAA,EACd,MAAM,OAAiB,CAAC;AAAA,EAExB,WAAW,OAAO,IAAI,MAAM;AAAA,IAC1B,IAAI,QAAQ,QAAQ,QAAQ,aAAa;AAAA,MACvC,UAAU;AAAA,IACZ,EAAO,SAAI,CAAC,IAAI,WAAW,GAAG,GAAG;AAAA,MAC/B,KAAK,KAAK,GAAG;AAAA,IACf;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,MAAM,IAAI,OAAO,UAAU;AAAA,CAA0B;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EAEA,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,OAAO,IAAI,GAAG,QAAQ,IAAI,KAAK,GAAG;AAAA,IACxC,IAAI;AAAA,MACF,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,WAAW,QAAQ,CAAC;AAAA,MAC/C,OAAO,KAAK;AAAA,MACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC/D,MAAM,IAAI,OAAO,UAAU,mCAAmC,SAAS;AAAA,CAAW;AAAA,MAClF,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO;AAAA;",
8
+ "debugId": "43C20439FAB30DFD64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,88 @@
1
+ // src/commands/mv/mv.ts
2
+ var mv = async (ctx) => {
3
+ let noClobber = false;
4
+ const paths = [];
5
+ for (const arg of ctx.args) {
6
+ if (arg === "-n" || arg === "--no-clobber") {
7
+ noClobber = true;
8
+ } else if (arg === "-f" || arg === "--force") {} else if (arg.startsWith("-")) {
9
+ for (const flag of arg.slice(1)) {
10
+ if (flag === "n")
11
+ noClobber = true;
12
+ else if (flag === "f") {}
13
+ }
14
+ } else {
15
+ paths.push(arg);
16
+ }
17
+ }
18
+ if (paths.length < 2) {
19
+ await ctx.stderr.writeText(`mv: missing destination file operand
20
+ `);
21
+ return 1;
22
+ }
23
+ const sources = paths.slice(0, -1);
24
+ const dest = paths[paths.length - 1];
25
+ const destPath = ctx.fs.resolve(ctx.cwd, dest);
26
+ let destIsDir = false;
27
+ try {
28
+ const stat = await ctx.fs.stat(destPath);
29
+ destIsDir = stat.isDirectory();
30
+ } catch {}
31
+ if (sources.length > 1 && !destIsDir) {
32
+ await ctx.stderr.writeText(`mv: target '${dest}' is not a directory
33
+ `);
34
+ return 1;
35
+ }
36
+ for (const source of sources) {
37
+ const srcPath = ctx.fs.resolve(ctx.cwd, source);
38
+ try {
39
+ await ctx.fs.stat(srcPath);
40
+ const finalDest = destIsDir ? ctx.fs.resolve(destPath, ctx.fs.basename(srcPath)) : destPath;
41
+ if (noClobber) {
42
+ const exists = await ctx.fs.exists(finalDest);
43
+ if (exists)
44
+ continue;
45
+ }
46
+ const srcStat = await ctx.fs.stat(srcPath);
47
+ if (srcStat.isDirectory()) {
48
+ await moveDirectory(ctx, srcPath, finalDest, noClobber);
49
+ } else {
50
+ const content = await ctx.fs.readFile(srcPath);
51
+ await ctx.fs.writeFile(finalDest, content);
52
+ await ctx.fs.rm(srcPath);
53
+ }
54
+ } catch (err) {
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ await ctx.stderr.writeText(`mv: cannot stat '${source}': ${message}
57
+ `);
58
+ return 1;
59
+ }
60
+ }
61
+ return 0;
62
+ };
63
+ async function moveDirectory(ctx, src, dest, noClobber) {
64
+ await ctx.fs.mkdir(dest, { recursive: true });
65
+ const entries = await ctx.fs.readdir(src);
66
+ for (const entry of entries) {
67
+ const srcPath = ctx.fs.resolve(src, entry);
68
+ const destPath = ctx.fs.resolve(dest, entry);
69
+ const stat = await ctx.fs.stat(srcPath);
70
+ if (stat.isDirectory()) {
71
+ await moveDirectory(ctx, srcPath, destPath, noClobber);
72
+ } else {
73
+ if (noClobber) {
74
+ const exists = await ctx.fs.exists(destPath);
75
+ if (exists)
76
+ continue;
77
+ }
78
+ const content = await ctx.fs.readFile(srcPath);
79
+ await ctx.fs.writeFile(destPath, content);
80
+ }
81
+ }
82
+ await ctx.fs.rm(src, { recursive: true });
83
+ }
84
+ export {
85
+ mv
86
+ };
87
+
88
+ //# debugId=9E82B62514CDCFA164756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/commands/mv/mv.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../../types.mjs\";\n\nexport const mv: Command = async (ctx) => {\n let noClobber = false;\n const paths: string[] = [];\n\n for (const arg of ctx.args) {\n if (arg === \"-n\" || arg === \"--no-clobber\") {\n noClobber = true;\n } else if (arg === \"-f\" || arg === \"--force\") {\n // Force is default behavior, just accept the flag\n } else if (arg.startsWith(\"-\")) {\n // Parse combined flags\n for (const flag of arg.slice(1)) {\n if (flag === \"n\") noClobber = true;\n else if (flag === \"f\") { /* force is default */ }\n }\n } else {\n paths.push(arg);\n }\n }\n\n if (paths.length < 2) {\n await ctx.stderr.writeText(\"mv: missing destination file operand\\n\");\n return 1;\n }\n\n const sources = paths.slice(0, -1);\n const dest = paths[paths.length - 1]!;\n const destPath = ctx.fs.resolve(ctx.cwd, dest);\n\n // Check if destination is a directory\n let destIsDir = false;\n try {\n const stat = await ctx.fs.stat(destPath);\n destIsDir = stat.isDirectory();\n } catch {\n // Destination doesn't exist\n }\n\n // If multiple sources, dest must be a directory\n if (sources.length > 1 && !destIsDir) {\n await ctx.stderr.writeText(`mv: target '${dest}' is not a directory\\n`);\n return 1;\n }\n\n for (const source of sources) {\n const srcPath = ctx.fs.resolve(ctx.cwd, source);\n\n try {\n // Check source exists\n await ctx.fs.stat(srcPath);\n\n // Determine final destination path\n const finalDest = destIsDir\n ? ctx.fs.resolve(destPath, ctx.fs.basename(srcPath))\n : destPath;\n\n // Check if dest exists and noClobber\n if (noClobber) {\n const exists = await ctx.fs.exists(finalDest);\n if (exists) continue; // Skip silently\n }\n\n // Move: copy then delete\n const srcStat = await ctx.fs.stat(srcPath);\n if (srcStat.isDirectory()) {\n await moveDirectory(ctx, srcPath, finalDest, noClobber);\n } else {\n const content = await ctx.fs.readFile(srcPath);\n await ctx.fs.writeFile(finalDest, content);\n await ctx.fs.rm(srcPath);\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n await ctx.stderr.writeText(`mv: cannot stat '${source}': ${message}\\n`);\n return 1;\n }\n }\n\n return 0;\n};\n\nasync function moveDirectory(\n ctx: Parameters<Command>[0],\n src: string,\n dest: string,\n noClobber: boolean\n): Promise<void> {\n // Create destination directory\n await ctx.fs.mkdir(dest, { recursive: true });\n\n // Read source directory contents\n const entries = await ctx.fs.readdir(src);\n\n for (const entry of entries) {\n const srcPath = ctx.fs.resolve(src, entry);\n const destPath = ctx.fs.resolve(dest, entry);\n\n const stat = await ctx.fs.stat(srcPath);\n\n if (stat.isDirectory()) {\n await moveDirectory(ctx, srcPath, destPath, noClobber);\n } else {\n if (noClobber) {\n const exists = await ctx.fs.exists(destPath);\n if (exists) continue;\n }\n const content = await ctx.fs.readFile(srcPath);\n await ctx.fs.writeFile(destPath, content);\n }\n }\n\n // Remove source directory after copying\n await ctx.fs.rm(src, { recursive: true });\n}\n"
6
+ ],
7
+ "mappings": ";AAEO,IAAM,KAAc,OAAO,QAAQ;AAAA,EACxC,IAAI,YAAY;AAAA,EAChB,MAAM,QAAkB,CAAC;AAAA,EAEzB,WAAW,OAAO,IAAI,MAAM;AAAA,IAC1B,IAAI,QAAQ,QAAQ,QAAQ,gBAAgB;AAAA,MAC1C,YAAY;AAAA,IACd,EAAO,SAAI,QAAQ,QAAQ,QAAQ,WAAW,CAE9C,EAAO,SAAI,IAAI,WAAW,GAAG,GAAG;AAAA,MAE9B,WAAW,QAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,QAC/B,IAAI,SAAS;AAAA,UAAK,YAAY;AAAA,QACzB,SAAI,SAAS,KAAK,CAAyB;AAAA,MAClD;AAAA,IACF,EAAO;AAAA,MACL,MAAM,KAAK,GAAG;AAAA;AAAA,EAElB;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,MAAM,IAAI,OAAO,UAAU;AAAA,CAAwC;AAAA,IACnE,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAU,MAAM,MAAM,GAAG,EAAE;AAAA,EACjC,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,EAClC,MAAM,WAAW,IAAI,GAAG,QAAQ,IAAI,KAAK,IAAI;AAAA,EAG7C,IAAI,YAAY;AAAA,EAChB,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,IAAI,GAAG,KAAK,QAAQ;AAAA,IACvC,YAAY,KAAK,YAAY;AAAA,IAC7B,MAAM;AAAA,EAKR,IAAI,QAAQ,SAAS,KAAK,CAAC,WAAW;AAAA,IACpC,MAAM,IAAI,OAAO,UAAU,eAAe;AAAA,CAA4B;AAAA,IACtE,OAAO;AAAA,EACT;AAAA,EAEA,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,UAAU,IAAI,GAAG,QAAQ,IAAI,KAAK,MAAM;AAAA,IAE9C,IAAI;AAAA,MAEF,MAAM,IAAI,GAAG,KAAK,OAAO;AAAA,MAGzB,MAAM,YAAY,YACd,IAAI,GAAG,QAAQ,UAAU,IAAI,GAAG,SAAS,OAAO,CAAC,IACjD;AAAA,MAGJ,IAAI,WAAW;AAAA,QACb,MAAM,SAAS,MAAM,IAAI,GAAG,OAAO,SAAS;AAAA,QAC5C,IAAI;AAAA,UAAQ;AAAA,MACd;AAAA,MAGA,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,OAAO;AAAA,MACzC,IAAI,QAAQ,YAAY,GAAG;AAAA,QACzB,MAAM,cAAc,KAAK,SAAS,WAAW,SAAS;AAAA,MACxD,EAAO;AAAA,QACL,MAAM,UAAU,MAAM,IAAI,GAAG,SAAS,OAAO;AAAA,QAC7C,MAAM,IAAI,GAAG,UAAU,WAAW,OAAO;AAAA,QACzC,MAAM,IAAI,GAAG,GAAG,OAAO;AAAA;AAAA,MAEzB,OAAO,KAAK;AAAA,MACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC/D,MAAM,IAAI,OAAO,UAAU,oBAAoB,YAAY;AAAA,CAAW;AAAA,MACtE,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO;AAAA;AAGT,eAAe,aAAa,CAC1B,KACA,KACA,MACA,WACe;AAAA,EAEf,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EAG5C,MAAM,UAAU,MAAM,IAAI,GAAG,QAAQ,GAAG;AAAA,EAExC,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,UAAU,IAAI,GAAG,QAAQ,KAAK,KAAK;AAAA,IACzC,MAAM,WAAW,IAAI,GAAG,QAAQ,MAAM,KAAK;AAAA,IAE3C,MAAM,OAAO,MAAM,IAAI,GAAG,KAAK,OAAO;AAAA,IAEtC,IAAI,KAAK,YAAY,GAAG;AAAA,MACtB,MAAM,cAAc,KAAK,SAAS,UAAU,SAAS;AAAA,IACvD,EAAO;AAAA,MACL,IAAI,WAAW;AAAA,QACb,MAAM,SAAS,MAAM,IAAI,GAAG,OAAO,QAAQ;AAAA,QAC3C,IAAI;AAAA,UAAQ;AAAA,MACd;AAAA,MACA,MAAM,UAAU,MAAM,IAAI,GAAG,SAAS,OAAO;AAAA,MAC7C,MAAM,IAAI,GAAG,UAAU,UAAU,OAAO;AAAA;AAAA,EAE5C;AAAA,EAGA,MAAM,IAAI,GAAG,GAAG,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA;",
8
+ "debugId": "9E82B62514CDCFA164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,11 @@
1
+ // src/commands/pwd/pwd.ts
2
+ var pwd = async (ctx) => {
3
+ await ctx.stdout.writeText(ctx.cwd + `
4
+ `);
5
+ return 0;
6
+ };
7
+ export {
8
+ pwd
9
+ };
10
+
11
+ //# debugId=27E332D95222BBDB64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/commands/pwd/pwd.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../../types.mjs\";\n\nexport const pwd: Command = async (ctx) => {\n await ctx.stdout.writeText(ctx.cwd + \"\\n\");\n return 0;\n};\n"
6
+ ],
7
+ "mappings": ";AAEO,IAAM,MAAe,OAAO,QAAQ;AAAA,EACzC,MAAM,IAAI,OAAO,UAAU,IAAI,MAAM;AAAA,CAAI;AAAA,EACzC,OAAO;AAAA;",
8
+ "debugId": "27E332D95222BBDB64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,52 @@
1
+ // src/commands/rm/rm.ts
2
+ var rm = async (ctx) => {
3
+ let recursive = false;
4
+ let force = false;
5
+ const targets = [];
6
+ for (const arg of ctx.args) {
7
+ if (arg === "-r" || arg === "-R" || arg === "--recursive") {
8
+ recursive = true;
9
+ } else if (arg === "-f" || arg === "--force") {
10
+ force = true;
11
+ } else if (arg === "-rf" || arg === "-fr") {
12
+ recursive = true;
13
+ force = true;
14
+ } else if (arg.startsWith("-")) {
15
+ for (const flag of arg.slice(1)) {
16
+ if (flag === "r" || flag === "R")
17
+ recursive = true;
18
+ else if (flag === "f")
19
+ force = true;
20
+ }
21
+ } else {
22
+ targets.push(arg);
23
+ }
24
+ }
25
+ if (targets.length === 0) {
26
+ if (!force) {
27
+ await ctx.stderr.writeText(`rm: missing operand
28
+ `);
29
+ return 1;
30
+ }
31
+ return 0;
32
+ }
33
+ for (const target of targets) {
34
+ const path = ctx.fs.resolve(ctx.cwd, target);
35
+ try {
36
+ await ctx.fs.rm(path, { recursive, force });
37
+ } catch (err) {
38
+ if (!force) {
39
+ const message = err instanceof Error ? err.message : String(err);
40
+ await ctx.stderr.writeText(`rm: cannot remove '${target}': ${message}
41
+ `);
42
+ return 1;
43
+ }
44
+ }
45
+ }
46
+ return 0;
47
+ };
48
+ export {
49
+ rm
50
+ };
51
+
52
+ //# debugId=98255F03811F1CFC64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/commands/rm/rm.ts"],
4
+ "sourcesContent": [
5
+ "import type { Command } from \"../../types.mjs\";\n\nexport const rm: Command = async (ctx) => {\n let recursive = false;\n let force = false;\n const targets: string[] = [];\n\n for (const arg of ctx.args) {\n if (arg === \"-r\" || arg === \"-R\" || arg === \"--recursive\") {\n recursive = true;\n } else if (arg === \"-f\" || arg === \"--force\") {\n force = true;\n } else if (arg === \"-rf\" || arg === \"-fr\") {\n recursive = true;\n force = true;\n } else if (arg.startsWith(\"-\")) {\n for (const flag of arg.slice(1)) {\n if (flag === \"r\" || flag === \"R\") recursive = true;\n else if (flag === \"f\") force = true;\n }\n } else {\n targets.push(arg);\n }\n }\n\n if (targets.length === 0) {\n if (!force) {\n await ctx.stderr.writeText(\"rm: missing operand\\n\");\n return 1;\n }\n return 0;\n }\n\n for (const target of targets) {\n const path = ctx.fs.resolve(ctx.cwd, target);\n try {\n await ctx.fs.rm(path, { recursive, force });\n } catch (err) {\n if (!force) {\n const message = err instanceof Error ? err.message : String(err);\n await ctx.stderr.writeText(`rm: cannot remove '${target}': ${message}\\n`);\n return 1;\n }\n }\n }\n\n return 0;\n};\n"
6
+ ],
7
+ "mappings": ";AAEO,IAAM,KAAc,OAAO,QAAQ;AAAA,EACxC,IAAI,YAAY;AAAA,EAChB,IAAI,QAAQ;AAAA,EACZ,MAAM,UAAoB,CAAC;AAAA,EAE3B,WAAW,OAAO,IAAI,MAAM;AAAA,IAC1B,IAAI,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,eAAe;AAAA,MACzD,YAAY;AAAA,IACd,EAAO,SAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,MAC5C,QAAQ;AAAA,IACV,EAAO,SAAI,QAAQ,SAAS,QAAQ,OAAO;AAAA,MACzC,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV,EAAO,SAAI,IAAI,WAAW,GAAG,GAAG;AAAA,MAC9B,WAAW,QAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,QAC/B,IAAI,SAAS,OAAO,SAAS;AAAA,UAAK,YAAY;AAAA,QACzC,SAAI,SAAS;AAAA,UAAK,QAAQ;AAAA,MACjC;AAAA,IACF,EAAO;AAAA,MACL,QAAQ,KAAK,GAAG;AAAA;AAAA,EAEpB;AAAA,EAEA,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,IAAI,OAAO,UAAU;AAAA,CAAuB;AAAA,MAClD,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,OAAO,IAAI,GAAG,QAAQ,IAAI,KAAK,MAAM;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,IAAI,GAAG,GAAG,MAAM,EAAE,WAAW,MAAM,CAAC;AAAA,MAC1C,OAAO,KAAK;AAAA,MACZ,IAAI,CAAC,OAAO;AAAA,QACV,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QAC/D,MAAM,IAAI,OAAO,UAAU,sBAAsB,YAAY;AAAA,CAAW;AAAA,QACxE,OAAO;AAAA,MACT;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO;AAAA;",
8
+ "debugId": "98255F03811F1CFC64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,188 @@
1
+ // src/commands/sed/sed.ts
2
+ function parseSubstitution(script) {
3
+ const match = script.match(/^s(.)(.+?)\1(.*?)\1([gi]*)$/);
4
+ if (!match)
5
+ return null;
6
+ const [, , patternStr, replacement, flags] = match;
7
+ const globalFlag = flags.includes("g");
8
+ const caseInsensitive = flags.includes("i");
9
+ try {
10
+ const regexFlags = caseInsensitive ? "i" : "";
11
+ return {
12
+ type: "s",
13
+ pattern: new RegExp(patternStr, regexFlags),
14
+ replacement,
15
+ globalFlag,
16
+ printFlag: false
17
+ };
18
+ } catch {
19
+ return null;
20
+ }
21
+ }
22
+ function parseCommand(script) {
23
+ const trimmed = script.trim();
24
+ const addressMatch = trimmed.match(/^\/(.+?)\/([dp])$/);
25
+ if (addressMatch) {
26
+ const [, addressPatternStr, cmd] = addressMatch;
27
+ try {
28
+ return {
29
+ type: cmd,
30
+ addressPattern: new RegExp(addressPatternStr),
31
+ globalFlag: false,
32
+ printFlag: false
33
+ };
34
+ } catch {
35
+ return null;
36
+ }
37
+ }
38
+ if (trimmed === "d") {
39
+ return { type: "d", globalFlag: false, printFlag: false };
40
+ }
41
+ if (trimmed === "p") {
42
+ return { type: "p", globalFlag: false, printFlag: false };
43
+ }
44
+ const addressSubMatch = trimmed.match(/^\/(.+?)\/s(.)(.+?)\2(.*?)\2([gi]*)$/);
45
+ if (addressSubMatch) {
46
+ const [, addressPatternStr, , patternStr, replacement, flags] = addressSubMatch;
47
+ const globalFlag = flags.includes("g");
48
+ const caseInsensitive = flags.includes("i");
49
+ try {
50
+ return {
51
+ type: "s",
52
+ addressPattern: new RegExp(addressPatternStr),
53
+ pattern: new RegExp(patternStr, caseInsensitive ? "i" : ""),
54
+ replacement,
55
+ globalFlag,
56
+ printFlag: false
57
+ };
58
+ } catch {
59
+ return null;
60
+ }
61
+ }
62
+ const subCmd = parseSubstitution(trimmed);
63
+ if (subCmd)
64
+ return subCmd;
65
+ return null;
66
+ }
67
+ function parseArgs(args) {
68
+ const options = {
69
+ suppressOutput: false,
70
+ commands: []
71
+ };
72
+ const files = [];
73
+ let i = 0;
74
+ while (i < args.length) {
75
+ const arg = args[i];
76
+ if (arg === "-n") {
77
+ options.suppressOutput = true;
78
+ i++;
79
+ continue;
80
+ }
81
+ if (arg === "-e" && args[i + 1] !== undefined) {
82
+ const cmd = parseCommand(args[i + 1]);
83
+ if (cmd) {
84
+ options.commands.push(cmd);
85
+ }
86
+ i += 2;
87
+ continue;
88
+ }
89
+ if (!arg.startsWith("-")) {
90
+ if (options.commands.length === 0) {
91
+ const cmd = parseCommand(arg);
92
+ if (cmd) {
93
+ options.commands.push(cmd);
94
+ }
95
+ } else {
96
+ files.push(arg);
97
+ }
98
+ }
99
+ i++;
100
+ }
101
+ return { options, files };
102
+ }
103
+ function applySubstitution(line, cmd) {
104
+ if (!cmd.pattern)
105
+ return line;
106
+ if (cmd.globalFlag) {
107
+ return line.replace(new RegExp(cmd.pattern.source, cmd.pattern.flags + "g"), cmd.replacement);
108
+ } else {
109
+ return line.replace(cmd.pattern, cmd.replacement);
110
+ }
111
+ }
112
+ function processLine(line, commands, suppressOutput) {
113
+ let currentLine = line;
114
+ let deleted = false;
115
+ let printed = false;
116
+ for (const cmd of commands) {
117
+ if (cmd.addressPattern && !cmd.addressPattern.test(currentLine)) {
118
+ continue;
119
+ }
120
+ switch (cmd.type) {
121
+ case "s":
122
+ currentLine = applySubstitution(currentLine, cmd);
123
+ break;
124
+ case "d":
125
+ deleted = true;
126
+ return { output: null, deleted: true };
127
+ case "p":
128
+ printed = true;
129
+ break;
130
+ }
131
+ }
132
+ if (deleted) {
133
+ return { output: null, deleted: true };
134
+ }
135
+ if (suppressOutput) {
136
+ return { output: printed ? currentLine : null, deleted: false };
137
+ }
138
+ if (printed) {
139
+ return { output: currentLine + `
140
+ ` + currentLine, deleted: false };
141
+ }
142
+ return { output: currentLine, deleted: false };
143
+ }
144
+ var sed = async (ctx) => {
145
+ const { options, files } = parseArgs(ctx.args);
146
+ if (options.commands.length === 0) {
147
+ await ctx.stderr.writeText(`sed: missing script
148
+ `);
149
+ return 1;
150
+ }
151
+ const processContent = async (content) => {
152
+ const lines = content.split(`
153
+ `);
154
+ if (lines.length > 0 && lines[lines.length - 1] === "") {
155
+ lines.pop();
156
+ }
157
+ for (const line of lines) {
158
+ const { output } = processLine(line, options.commands, options.suppressOutput);
159
+ if (output !== null) {
160
+ await ctx.stdout.writeText(output + `
161
+ `);
162
+ }
163
+ }
164
+ };
165
+ if (files.length === 0) {
166
+ const content = await ctx.stdin.text();
167
+ await processContent(content);
168
+ } else {
169
+ for (const file of files) {
170
+ try {
171
+ const path = ctx.fs.resolve(ctx.cwd, file);
172
+ const content = await ctx.fs.readFile(path);
173
+ await processContent(content.toString());
174
+ } catch (err) {
175
+ const message = err instanceof Error ? err.message : String(err);
176
+ await ctx.stderr.writeText(`sed: ${file}: ${message}
177
+ `);
178
+ return 1;
179
+ }
180
+ }
181
+ }
182
+ return 0;
183
+ };
184
+ export {
185
+ sed
186
+ };
187
+
188
+ //# debugId=87CDDCAD5F22F55864756E2164756E21