@fnndsc/brasa 0.56.1 → 0.56.3

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 (361) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/berth/berth.d.ts +90 -3
  3. package/dist/builtins/berth/berth.js +129 -76
  4. package/dist/builtins/berth/berth.js.map +1 -1
  5. package/dist/builtins/berth/berthClose.d.ts +25 -6
  6. package/dist/builtins/berth/berthClose.js +8 -64
  7. package/dist/builtins/berth/berthClose.js.map +1 -1
  8. package/dist/builtins/berth/berthCube.d.ts +3 -2
  9. package/dist/builtins/berth/berthCube.js +9 -16
  10. package/dist/builtins/berth/berthCube.js.map +1 -1
  11. package/dist/builtins/berth/berthProcesses.js +33 -3
  12. package/dist/builtins/berth/berthProcesses.js.map +1 -1
  13. package/dist/builtins/debug.d.ts +24 -3
  14. package/dist/builtins/debug.js +66 -13
  15. package/dist/builtins/debug.js.map +1 -1
  16. package/dist/builtins/fs/acl.args.d.ts +5 -38
  17. package/dist/builtins/fs/acl.args.js +6 -72
  18. package/dist/builtins/fs/acl.args.js.map +1 -1
  19. package/dist/builtins/fs/acl.d.ts +100 -10
  20. package/dist/builtins/fs/acl.js +222 -68
  21. package/dist/builtins/fs/acl.js.map +1 -1
  22. package/dist/builtins/fs/cat.args.d.ts +14 -15
  23. package/dist/builtins/fs/cat.args.js +13 -40
  24. package/dist/builtins/fs/cat.args.js.map +1 -1
  25. package/dist/builtins/fs/cat.d.ts +40 -3
  26. package/dist/builtins/fs/cat.js +92 -13
  27. package/dist/builtins/fs/cat.js.map +1 -1
  28. package/dist/builtins/fs/cd.d.ts +24 -6
  29. package/dist/builtins/fs/cd.js +71 -18
  30. package/dist/builtins/fs/cd.js.map +1 -1
  31. package/dist/builtins/fs/configWrite.d.ts +24 -8
  32. package/dist/builtins/fs/configWrite.js +77 -36
  33. package/dist/builtins/fs/configWrite.js.map +1 -1
  34. package/dist/builtins/fs/cp.d.ts +39 -4
  35. package/dist/builtins/fs/cp.js +122 -56
  36. package/dist/builtins/fs/cp.js.map +1 -1
  37. package/dist/builtins/fs/download.d.ts +31 -4
  38. package/dist/builtins/fs/download.js +75 -38
  39. package/dist/builtins/fs/download.js.map +1 -1
  40. package/dist/builtins/fs/du.d.ts +59 -33
  41. package/dist/builtins/fs/du.js +111 -79
  42. package/dist/builtins/fs/du.js.map +1 -1
  43. package/dist/builtins/fs/edit.d.ts +19 -4
  44. package/dist/builtins/fs/edit.js +77 -16
  45. package/dist/builtins/fs/edit.js.map +1 -1
  46. package/dist/builtins/fs/find.d.ts +25 -0
  47. package/dist/builtins/fs/find.js +76 -5
  48. package/dist/builtins/fs/find.js.map +1 -1
  49. package/dist/builtins/fs/ls.d.ts +69 -4
  50. package/dist/builtins/fs/ls.js +84 -45
  51. package/dist/builtins/fs/ls.js.map +1 -1
  52. package/dist/builtins/fs/mkdir.d.ts +28 -18
  53. package/dist/builtins/fs/mkdir.js +95 -66
  54. package/dist/builtins/fs/mkdir.js.map +1 -1
  55. package/dist/builtins/fs/mv.d.ts +34 -4
  56. package/dist/builtins/fs/mv.js +129 -64
  57. package/dist/builtins/fs/mv.js.map +1 -1
  58. package/dist/builtins/fs/pull.args.d.ts +56 -17
  59. package/dist/builtins/fs/pull.args.js +16 -66
  60. package/dist/builtins/fs/pull.args.js.map +1 -1
  61. package/dist/builtins/fs/pull.d.ts +62 -0
  62. package/dist/builtins/fs/pull.js +123 -31
  63. package/dist/builtins/fs/pull.js.map +1 -1
  64. package/dist/builtins/fs/pwd.d.ts +19 -5
  65. package/dist/builtins/fs/pwd.js +62 -8
  66. package/dist/builtins/fs/pwd.js.map +1 -1
  67. package/dist/builtins/fs/rm.d.ts +58 -21
  68. package/dist/builtins/fs/rm.js +99 -82
  69. package/dist/builtins/fs/rm.js.map +1 -1
  70. package/dist/builtins/fs/rmdir.d.ts +29 -11
  71. package/dist/builtins/fs/rmdir.js +87 -36
  72. package/dist/builtins/fs/rmdir.js.map +1 -1
  73. package/dist/builtins/fs/touch.d.ts +44 -9
  74. package/dist/builtins/fs/touch.js +91 -27
  75. package/dist/builtins/fs/touch.js.map +1 -1
  76. package/dist/builtins/fs/tree.d.ts +36 -9
  77. package/dist/builtins/fs/tree.js +126 -36
  78. package/dist/builtins/fs/tree.js.map +1 -1
  79. package/dist/builtins/fs/upload.d.ts +22 -3
  80. package/dist/builtins/fs/upload.js +82 -14
  81. package/dist/builtins/fs/upload.js.map +1 -1
  82. package/dist/builtins/fs/xattr.args.d.ts +12 -33
  83. package/dist/builtins/fs/xattr.args.js +17 -95
  84. package/dist/builtins/fs/xattr.args.js.map +1 -1
  85. package/dist/builtins/fs/xattr.d.ts +98 -8
  86. package/dist/builtins/fs/xattr.js +163 -24
  87. package/dist/builtins/fs/xattr.js.map +1 -1
  88. package/dist/builtins/games/bytes.d.ts +201 -5
  89. package/dist/builtins/games/bytes.js +255 -54
  90. package/dist/builtins/games/bytes.js.map +1 -1
  91. package/dist/builtins/games/chimes.d.ts +180 -3
  92. package/dist/builtins/games/chimes.js +203 -26
  93. package/dist/builtins/games/chimes.js.map +1 -1
  94. package/dist/builtins/games/chrislab.d.ts +101 -3
  95. package/dist/builtins/games/chrislab.js +117 -17
  96. package/dist/builtins/games/chrislab.js.map +1 -1
  97. package/dist/builtins/games/cowsay.d.ts +93 -2
  98. package/dist/builtins/games/cowsay.js +90 -31
  99. package/dist/builtins/games/cowsay.js.map +1 -1
  100. package/dist/builtins/games/figlet.d.ts +70 -2
  101. package/dist/builtins/games/figlet.js +83 -6
  102. package/dist/builtins/games/figlet.js.map +1 -1
  103. package/dist/builtins/games/lab.d.ts +104 -5
  104. package/dist/builtins/games/lab.js +144 -6
  105. package/dist/builtins/games/lab.js.map +1 -1
  106. package/dist/builtins/games/lolcat.d.ts +61 -1
  107. package/dist/builtins/games/lolcat.js +59 -24
  108. package/dist/builtins/games/lolcat.js.map +1 -1
  109. package/dist/builtins/games/morse.d.ts +36 -1
  110. package/dist/builtins/games/morse.js +50 -2
  111. package/dist/builtins/games/morse.js.map +1 -1
  112. package/dist/builtins/games/numbers.d.ts +241 -5
  113. package/dist/builtins/games/numbers.js +298 -23
  114. package/dist/builtins/games/numbers.js.map +1 -1
  115. package/dist/builtins/games/play.d.ts +96 -6
  116. package/dist/builtins/games/play.js +137 -6
  117. package/dist/builtins/games/play.js.map +1 -1
  118. package/dist/builtins/games/qr.d.ts +40 -1
  119. package/dist/builtins/games/qr.js +51 -2
  120. package/dist/builtins/games/qr.js.map +1 -1
  121. package/dist/builtins/games/show.d.ts +131 -6
  122. package/dist/builtins/games/show.js +208 -20
  123. package/dist/builtins/games/show.js.map +1 -1
  124. package/dist/builtins/games/sky.d.ts +178 -4
  125. package/dist/builtins/games/sky.js +228 -12
  126. package/dist/builtins/games/sky.js.map +1 -1
  127. package/dist/builtins/games/text.d.ts +258 -7
  128. package/dist/builtins/games/text.js +310 -29
  129. package/dist/builtins/games/text.js.map +1 -1
  130. package/dist/builtins/games/trek.d.ts +67 -3
  131. package/dist/builtins/games/trek.js +63 -10
  132. package/dist/builtins/games/trek.js.map +1 -1
  133. package/dist/builtins/games/wtf.d.ts +58 -1
  134. package/dist/builtins/games/wtf.js +67 -6
  135. package/dist/builtins/games/wtf.js.map +1 -1
  136. package/dist/builtins/help.d.ts +41 -3
  137. package/dist/builtins/help.js +92 -796
  138. package/dist/builtins/help.js.map +1 -1
  139. package/dist/builtins/net/connect.d.ts +36 -3
  140. package/dist/builtins/net/connect.js +84 -26
  141. package/dist/builtins/net/connect.js.map +1 -1
  142. package/dist/builtins/net/cubepath.d.ts +49 -5
  143. package/dist/builtins/net/cubepath.js +69 -27
  144. package/dist/builtins/net/cubepath.js.map +1 -1
  145. package/dist/builtins/net/logout.d.ts +13 -4
  146. package/dist/builtins/net/logout.js +49 -3
  147. package/dist/builtins/net/logout.js.map +1 -1
  148. package/dist/builtins/net/netstat.d.ts +29 -4
  149. package/dist/builtins/net/netstat.js +64 -23
  150. package/dist/builtins/net/netstat.js.map +1 -1
  151. package/dist/builtins/net/pacs.d.ts +169 -15
  152. package/dist/builtins/net/pacs.js +92 -33
  153. package/dist/builtins/net/pacs.js.map +1 -1
  154. package/dist/builtins/net/query.args.d.ts +95 -0
  155. package/dist/builtins/net/query.args.js +26 -0
  156. package/dist/builtins/net/query.args.js.map +1 -0
  157. package/dist/builtins/net/query.d.ts +98 -5
  158. package/dist/builtins/net/query.js +89 -83
  159. package/dist/builtins/net/query.js.map +1 -1
  160. package/dist/builtins/net/status.d.ts +5 -3
  161. package/dist/builtins/net/status.js +5 -12
  162. package/dist/builtins/net/status.js.map +1 -1
  163. package/dist/builtins/parametersofplugin.d.ts +82 -3
  164. package/dist/builtins/parametersofplugin.js +79 -23
  165. package/dist/builtins/parametersofplugin.js.map +1 -1
  166. package/dist/builtins/proc.d.ts +210 -3
  167. package/dist/builtins/proc.js +210 -119
  168. package/dist/builtins/proc.js.map +1 -1
  169. package/dist/builtins/res/compute.d.ts +67 -3
  170. package/dist/builtins/res/compute.js +121 -35
  171. package/dist/builtins/res/compute.js.map +1 -1
  172. package/dist/builtins/res/dicom.d.ts +55 -7
  173. package/dist/builtins/res/dicom.js +86 -52
  174. package/dist/builtins/res/dicom.js.map +1 -1
  175. package/dist/builtins/res/expect.d.ts +52 -3
  176. package/dist/builtins/res/expect.js +92 -29
  177. package/dist/builtins/res/expect.js.map +1 -1
  178. package/dist/builtins/res/feed.d.ts +475 -3
  179. package/dist/builtins/res/feed.js +253 -158
  180. package/dist/builtins/res/feed.js.map +1 -1
  181. package/dist/builtins/res/files.d.ts +517 -3
  182. package/dist/builtins/res/files.js +124 -44
  183. package/dist/builtins/res/files.js.map +1 -1
  184. package/dist/builtins/res/gather.d.ts +113 -3
  185. package/dist/builtins/res/gather.js +153 -44
  186. package/dist/builtins/res/gather.js.map +1 -1
  187. package/dist/builtins/res/gather.process.d.ts +27 -19
  188. package/dist/builtins/res/gather.process.js +29 -59
  189. package/dist/builtins/res/gather.process.js.map +1 -1
  190. package/dist/builtins/res/group.d.ts +284 -3
  191. package/dist/builtins/res/group.js +147 -76
  192. package/dist/builtins/res/group.js.map +1 -1
  193. package/dist/builtins/res/image.d.ts +30 -2
  194. package/dist/builtins/res/image.js +62 -10
  195. package/dist/builtins/res/image.js.map +1 -1
  196. package/dist/builtins/res/play.d.ts +71 -9
  197. package/dist/builtins/res/play.js +124 -82
  198. package/dist/builtins/res/play.js.map +1 -1
  199. package/dist/builtins/res/plugininstance.d.ts +307 -2
  200. package/dist/builtins/res/plugininstance.js +122 -50
  201. package/dist/builtins/res/plugininstance.js.map +1 -1
  202. package/dist/builtins/res/pluginmeta.d.ts +244 -2
  203. package/dist/builtins/res/pluginmeta.js +98 -40
  204. package/dist/builtins/res/pluginmeta.js.map +1 -1
  205. package/dist/builtins/res/record.d.ts +37 -3
  206. package/dist/builtins/res/record.js +127 -57
  207. package/dist/builtins/res/record.js.map +1 -1
  208. package/dist/builtins/res/resourceList.d.ts +136 -0
  209. package/dist/builtins/res/resourceList.js +51 -0
  210. package/dist/builtins/res/resourceList.js.map +1 -0
  211. package/dist/builtins/res/tag.d.ts +244 -3
  212. package/dist/builtins/res/tag.js +97 -41
  213. package/dist/builtins/res/tag.js.map +1 -1
  214. package/dist/builtins/res/user.d.ts +122 -3
  215. package/dist/builtins/res/user.js +83 -21
  216. package/dist/builtins/res/user.js.map +1 -1
  217. package/dist/builtins/res/workflow.d.ts +244 -2
  218. package/dist/builtins/res/workflow.js +97 -40
  219. package/dist/builtins/res/workflow.js.map +1 -1
  220. package/dist/builtins/store.d.ts +85 -3
  221. package/dist/builtins/store.js +135 -68
  222. package/dist/builtins/store.js.map +1 -1
  223. package/dist/builtins/sys/apropos.d.ts +80 -5
  224. package/dist/builtins/sys/apropos.js +121 -15
  225. package/dist/builtins/sys/apropos.js.map +1 -1
  226. package/dist/builtins/sys/cal.d.ts +44 -5
  227. package/dist/builtins/sys/cal.js +57 -10
  228. package/dist/builtins/sys/cal.js.map +1 -1
  229. package/dist/builtins/sys/command.d.ts +20 -0
  230. package/dist/builtins/sys/command.js +31 -0
  231. package/dist/builtins/sys/command.js.map +1 -1
  232. package/dist/builtins/sys/context.d.ts +13 -3
  233. package/dist/builtins/sys/context.js +51 -4
  234. package/dist/builtins/sys/context.js.map +1 -1
  235. package/dist/builtins/sys/date.d.ts +56 -5
  236. package/dist/builtins/sys/date.js +63 -9
  237. package/dist/builtins/sys/date.js.map +1 -1
  238. package/dist/builtins/sys/echo.d.ts +63 -2
  239. package/dist/builtins/sys/echo.js +87 -8
  240. package/dist/builtins/sys/echo.js.map +1 -1
  241. package/dist/builtins/sys/fortune.d.ts +27 -2
  242. package/dist/builtins/sys/fortune.js +44 -2
  243. package/dist/builtins/sys/fortune.js.map +1 -1
  244. package/dist/builtins/sys/grep.d.ts +245 -11
  245. package/dist/builtins/sys/grep.js +418 -131
  246. package/dist/builtins/sys/grep.js.map +1 -1
  247. package/dist/builtins/sys/joblets.d.ts +66 -7
  248. package/dist/builtins/sys/joblets.js +101 -14
  249. package/dist/builtins/sys/joblets.js.map +1 -1
  250. package/dist/builtins/sys/motd.d.ts +37 -3
  251. package/dist/builtins/sys/motd.js +49 -8
  252. package/dist/builtins/sys/motd.js.map +1 -1
  253. package/dist/builtins/sys/notes.d.ts +75 -3
  254. package/dist/builtins/sys/notes.js +90 -29
  255. package/dist/builtins/sys/notes.js.map +1 -1
  256. package/dist/builtins/sys/physicalmode.d.ts +24 -3
  257. package/dist/builtins/sys/physicalmode.js +68 -14
  258. package/dist/builtins/sys/physicalmode.js.map +1 -1
  259. package/dist/builtins/sys/tasks.d.ts +74 -5
  260. package/dist/builtins/sys/tasks.js +102 -14
  261. package/dist/builtins/sys/tasks.js.map +1 -1
  262. package/dist/builtins/sys/textFilters.d.ts +673 -41
  263. package/dist/builtins/sys/textFilters.js +719 -264
  264. package/dist/builtins/sys/textFilters.js.map +1 -1
  265. package/dist/builtins/sys/timing.d.ts +24 -3
  266. package/dist/builtins/sys/timing.js +67 -14
  267. package/dist/builtins/sys/timing.js.map +1 -1
  268. package/dist/builtins/sys/variables.d.ts +70 -4
  269. package/dist/builtins/sys/variables.js +103 -31
  270. package/dist/builtins/sys/variables.js.map +1 -1
  271. package/dist/builtins/sys/version.d.ts +27 -2
  272. package/dist/builtins/sys/version.js +48 -3
  273. package/dist/builtins/sys/version.js.map +1 -1
  274. package/dist/builtins/sys/weather.d.ts +92 -15
  275. package/dist/builtins/sys/weather.js +71 -45
  276. package/dist/builtins/sys/weather.js.map +1 -1
  277. package/dist/builtins/sys/whoami.d.ts +38 -18
  278. package/dist/builtins/sys/whoami.js +112 -8
  279. package/dist/builtins/sys/whoami.js.map +1 -1
  280. package/dist/builtins/utils.d.ts +1 -38
  281. package/dist/builtins/utils.js +1 -87
  282. package/dist/builtins/utils.js.map +1 -1
  283. package/dist/chris/backend.js +2 -0
  284. package/dist/chris/backend.js.map +1 -1
  285. package/dist/chris/chrisCommands.js +62 -159
  286. package/dist/chris/chrisCommands.js.map +1 -1
  287. package/dist/chris/commandFallback.d.ts +12 -0
  288. package/dist/chris/commandFallback.js +47 -0
  289. package/dist/chris/commandFallback.js.map +1 -1
  290. package/dist/chris/files.js +24 -85
  291. package/dist/chris/files.js.map +1 -1
  292. package/dist/chris/filesystem.js +7 -5
  293. package/dist/chris/filesystem.js.map +1 -1
  294. package/dist/chris/help.js +0 -1082
  295. package/dist/chris/help.js.map +1 -1
  296. package/dist/chris/kinds.d.ts +30 -0
  297. package/dist/chris/kinds.js +154 -0
  298. package/dist/chris/kinds.js.map +1 -0
  299. package/dist/chris/mounts.d.ts +4 -4
  300. package/dist/chris/mounts.js +9 -16
  301. package/dist/chris/mounts.js.map +1 -1
  302. package/dist/chris/navigation.d.ts +2 -3
  303. package/dist/chris/navigation.js +6 -20
  304. package/dist/chris/navigation.js.map +1 -1
  305. package/dist/chris/pacsResources.d.ts +259 -0
  306. package/dist/chris/pacsResources.js +168 -0
  307. package/dist/chris/pacsResources.js.map +1 -0
  308. package/dist/chris/promptContext.d.ts +6 -0
  309. package/dist/chris/promptContext.js +3 -1
  310. package/dist/chris/promptContext.js.map +1 -1
  311. package/dist/core/argumentKinds.d.ts +107 -0
  312. package/dist/core/argumentKinds.js +223 -0
  313. package/dist/core/argumentKinds.js.map +1 -0
  314. package/dist/core/backend.d.ts +4 -1
  315. package/dist/core/backend.js.map +1 -1
  316. package/dist/core/commandDeclaration.d.ts +453 -0
  317. package/dist/core/commandDeclaration.js +52 -0
  318. package/dist/core/commandDeclaration.js.map +1 -0
  319. package/dist/core/commandParse.d.ts +64 -0
  320. package/dist/core/commandParse.js +468 -0
  321. package/dist/core/commandParse.js.map +1 -0
  322. package/dist/core/commandRegistry.d.ts +37 -0
  323. package/dist/core/commandRegistry.js +100 -3
  324. package/dist/core/commandRegistry.js.map +1 -1
  325. package/dist/core/commandSchema.d.ts +32 -0
  326. package/dist/core/commandSchema.js +117 -0
  327. package/dist/core/commandSchema.js.map +1 -0
  328. package/dist/core/commandUsage.d.ts +62 -0
  329. package/dist/core/commandUsage.js +247 -0
  330. package/dist/core/commandUsage.js.map +1 -0
  331. package/dist/core/coreCommands.js +66 -214
  332. package/dist/core/coreCommands.js.map +1 -1
  333. package/dist/core/dispatch.js +15 -8
  334. package/dist/core/dispatch.js.map +1 -1
  335. package/dist/core/paths.d.ts +51 -0
  336. package/dist/core/paths.js +86 -2
  337. package/dist/core/paths.js.map +1 -1
  338. package/dist/core/preprocess.d.ts +10 -9
  339. package/dist/core/preprocess.js +10 -20
  340. package/dist/core/preprocess.js.map +1 -1
  341. package/dist/core/warmupFailures.d.ts +34 -2
  342. package/dist/core/warmupFailures.js +43 -2
  343. package/dist/core/warmupFailures.js.map +1 -1
  344. package/dist/lib/completer/cfsPaths.d.ts +14 -0
  345. package/dist/lib/completer/cfsPaths.js +91 -0
  346. package/dist/lib/completer/cfsPaths.js.map +1 -0
  347. package/dist/lib/completer/declared.d.ts +15 -0
  348. package/dist/lib/completer/declared.js +189 -0
  349. package/dist/lib/completer/declared.js.map +1 -0
  350. package/dist/lib/completer/index.js +33 -79
  351. package/dist/lib/completer/index.js.map +1 -1
  352. package/dist/lib/parser.d.ts +5 -8
  353. package/dist/lib/parser.js +2 -11
  354. package/dist/lib/parser.js.map +1 -1
  355. package/dist/lib/vfs/vfs.d.ts +2 -1
  356. package/dist/lib/vfs/vfs.js +9 -6
  357. package/dist/lib/vfs/vfs.js.map +1 -1
  358. package/dist/lib/wildcard.js +2 -3
  359. package/dist/lib/wildcard.js.map +1 -1
  360. package/dist/notes.json +1 -1
  361. package/package.json +6 -5
@@ -3,13 +3,17 @@
3
3
  *
4
4
  * Each reads what was piped in, else its arguments, and answers in kind:
5
5
  * `fortune | rev`, `rot13 hello`, `seq 1 2 9`. `yes` is bounded — a shell
6
- * that never ends is not a toy — and says how many it printed.
6
+ * that never ends is not a toy — and says how many it printed. Each is
7
+ * declared in one record (`revCommand`, `tacCommand`, `yesCommand`,
8
+ * `seqCommand`, `shufCommand`, `rot13Command`).
7
9
  *
8
10
  * @module
9
11
  */
10
12
  import chalk from 'chalk';
11
13
  import { text_input } from './stdin.js';
12
14
  import { envelope_ok, envelope_error } from '@fnndsc/menu';
15
+ import { command_declare } from '../../core/commandDeclaration.js';
16
+ import { declaredCommand_run } from '../../core/commandParse.js';
13
17
  /** Lines `yes` prints when not told how many. */
14
18
  export const YES_DEFAULT = 10;
15
19
  /** The most lines `yes` prints however it is asked. */
@@ -36,11 +40,16 @@ export function text_rot13(text) {
36
40
  /**
37
41
  * The numbers `seq` prints: `seq LAST`, `seq FIRST LAST`, `seq FIRST STEP LAST`.
38
42
  *
43
+ * @param nums - One to three numbers, as the line gave them.
39
44
  * @returns The numbers, or a refusal.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * seq_numbers([2, 5]); // { numbers: [2, 3, 4, 5] }
49
+ * ```
40
50
  */
41
- export function seq_numbers(args) {
42
- const nums = args.map(Number);
43
- if (nums.length === 0 || nums.length > 3 || nums.some((n) => !Number.isFinite(n))) {
51
+ export function seq_numbers(nums) {
52
+ if (nums.length === 0 || nums.length > 3) {
44
53
  return { refusal: 'seq: usage: seq [FIRST [STEP]] LAST' };
45
54
  }
46
55
  const [first, step, last] = nums.length === 1 ? [1, 1, nums[0]]
@@ -65,66 +74,338 @@ export function lines_shuffle(lines, random = Math.random) {
65
74
  }
66
75
  return out;
67
76
  }
68
- /** `rev [text]` */
77
+ /** The words of a toy that works on text: what is piped in, else these. */
78
+ const TEXT_OPERAND = { name: 'text', kind: 'word', optional: true, repeat: true, summary: 'The text to work on (default: what is piped in)' };
79
+ /** What a `rev` line may hold. */
80
+ const REV_GRAMMAR = { operands: [TEXT_OPERAND] };
81
+ /**
82
+ * `rev [text]`: the declaration.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * commands_register({ declarations: [revCommand] });
87
+ * ```
88
+ */
89
+ export const revCommand = command_declare({
90
+ name: 'rev',
91
+ grammar: REV_GRAMMAR,
92
+ help: {
93
+ summary: 'Reverse each line',
94
+ description: 'Reverses the characters of each line, keeping the lines in order. Reads what is piped in, else the words given.',
95
+ examples: ['rev stressed', 'fortune | rev'],
96
+ posix: { group: 'Text', differs: 'reads a pipe or its words' },
97
+ },
98
+ holds: [],
99
+ handler: async (args) => rev_run(args.operands.text),
100
+ });
101
+ /**
102
+ * `rev` over words already split: the declaration's parse and handler.
103
+ *
104
+ * @param args - The words after `rev`.
105
+ * @returns The reversed text, or the refusal of a bad line.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * await builtin_rev(['stressed']);
110
+ * ```
111
+ */
69
112
  export async function builtin_rev(args) {
70
- const text = text_input(args);
113
+ return declaredCommand_run(revCommand, args);
114
+ }
115
+ /**
116
+ * Reverses each line of the piped text, else of the words.
117
+ *
118
+ * @param words - The words given.
119
+ * @returns The reversed text, or a refusal when there is none.
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * await rev_run(['stressed']); // desserts
124
+ * ```
125
+ */
126
+ export async function rev_run(words) {
127
+ const text = text_input(words);
71
128
  if (text === null)
72
129
  return envelope_error('', undefined, 'rev: nothing to reverse (pipe text in, or give it)\n');
73
130
  const out = text_rev(text.replace(/\n$/, ''));
74
131
  return envelope_ok(`${out}\n`, { kind: 'games.rev', data: { text: out } });
75
132
  }
76
- /** `tac [text]` */
133
+ /** What a `tac` line may hold. */
134
+ const TAC_GRAMMAR = { operands: [TEXT_OPERAND] };
135
+ /**
136
+ * `tac [text]`: the declaration.
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * commands_register({ declarations: [tacCommand] });
141
+ * ```
142
+ */
143
+ export const tacCommand = command_declare({
144
+ name: 'tac',
145
+ grammar: TAC_GRAMMAR,
146
+ help: {
147
+ summary: 'Lines last to first',
148
+ description: 'cat backwards: prints the lines in reverse order. Reads what is piped in.',
149
+ examples: ['help games | tac', 'seq 5 | tac'],
150
+ posix: { group: 'Text', differs: 'reads a pipe or its words' },
151
+ },
152
+ holds: [],
153
+ handler: async (args) => tac_run(args.operands.text),
154
+ });
155
+ /**
156
+ * `tac` over words already split: the declaration's parse and handler.
157
+ *
158
+ * @param args - The words after `tac`.
159
+ * @returns The lines last to first, or the refusal of a bad line.
160
+ *
161
+ * @example
162
+ * ```ts
163
+ * await builtin_tac(['a']);
164
+ * ```
165
+ */
77
166
  export async function builtin_tac(args) {
78
- const text = text_input(args);
167
+ return declaredCommand_run(tacCommand, args);
168
+ }
169
+ /**
170
+ * Turns the lines of the piped text, else of the words, last to first.
171
+ *
172
+ * @param words - The words given.
173
+ * @returns The turned lines, or a refusal when there are none.
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * await tac_run(['a', 'b']);
178
+ * ```
179
+ */
180
+ export async function tac_run(words) {
181
+ const text = text_input(words);
79
182
  if (text === null)
80
183
  return envelope_error('', undefined, 'tac: nothing to turn over (pipe lines in)\n');
81
184
  const out = text_tac(text.endsWith('\n') ? text : `${text}\n`);
82
185
  return envelope_ok(out, { kind: 'games.tac', data: { text: out } });
83
186
  }
84
- /** `yes [word] [-n N]` */
187
+ /** What a `yes` line may hold. */
188
+ const YES_GRAMMAR = {
189
+ operands: [{ name: 'words', kind: 'word', optional: true, repeat: true, summary: 'The word to repeat (default y)' }],
190
+ options: {
191
+ count: { short: 'n', summary: 'Lines to print (default 10, at most 10000)', value: { name: 'N', kind: 'int', min: 1 } },
192
+ },
193
+ };
194
+ /**
195
+ * `yes [word] [-n N]`: the declaration.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * commands_register({ declarations: [yesCommand] });
200
+ * ```
201
+ */
202
+ export const yesCommand = command_declare({
203
+ name: 'yes',
204
+ grammar: YES_GRAMMAR,
205
+ help: {
206
+ summary: 'Repeat a word (ten times, not forever)',
207
+ description: 'Prints a word on its own line, over and over — but bounded: ten times unless -n N asks for more (up to 10000), and it says how many it printed. The real yes runs until killed; a session is not the place.',
208
+ examples: ['yes', 'yes no -n 3', 'yes | head -n 2'],
209
+ posix: { group: 'Text', differs: 'bounded: ten lines unless told how many, never forever' },
210
+ },
211
+ handler: async (args) => yes_run(args.operands.words, args.options.count),
212
+ });
213
+ /**
214
+ * `yes` over words already split: the declaration's parse and handler.
215
+ *
216
+ * @param args - The words after `yes`.
217
+ * @returns The repeated lines, or the refusal of a bad line.
218
+ *
219
+ * @example
220
+ * ```ts
221
+ * await builtin_yes(['no', '-n', '3']);
222
+ * ```
223
+ */
85
224
  export async function builtin_yes(args) {
86
- let count = YES_DEFAULT;
87
- const words = [];
88
- for (let i = 0; i < args.length; i++) {
89
- if (args[i] === '-n') {
90
- const n = Number(args[i + 1]);
91
- if (!Number.isInteger(n) || n < 1)
92
- return envelope_error('', undefined, 'yes: -n wants a positive whole number\n');
93
- count = Math.min(n, YES_MAX);
94
- i++;
95
- }
96
- else {
97
- words.push(args[i]);
98
- }
99
- }
225
+ return declaredCommand_run(yesCommand, args);
226
+ }
227
+ /**
228
+ * Prints a word a bounded number of times.
229
+ *
230
+ * @param words - The words to repeat, joined by a space; none means `y`.
231
+ * @param requested - How many lines were asked for, or undefined for the default.
232
+ * @returns The lines and a note saying how many.
233
+ *
234
+ * @example
235
+ * ```ts
236
+ * await yes_run(['no'], 3);
237
+ * ```
238
+ */
239
+ export async function yes_run(words, requested) {
240
+ const count = Math.min(requested ?? YES_DEFAULT, YES_MAX);
100
241
  const word = words.length > 0 ? words.join(' ') : 'y';
101
242
  const lines = `${word}\n`.repeat(count);
102
243
  // Bounded on purpose, and it says so: the real yes runs until killed.
103
244
  const note = chalk.gray(`yes: ${count} of forever (-n N for more, up to ${YES_MAX})\n`);
104
245
  return envelope_ok(lines + note, { kind: 'games.yes', data: { word, count } });
105
246
  }
106
- /** `seq [FIRST [STEP]] LAST` */
247
+ /** What a `seq` line may hold. */
248
+ const SEQ_GRAMMAR = {
249
+ operands: [{ name: 'numbers', kind: 'number', repeat: true, summary: '[FIRST [STEP]] LAST' }],
250
+ };
251
+ /**
252
+ * `seq [FIRST [STEP]] LAST`: the declaration.
253
+ *
254
+ * @example
255
+ * ```ts
256
+ * commands_register({ declarations: [seqCommand] });
257
+ * ```
258
+ */
259
+ export const seqCommand = command_declare({
260
+ name: 'seq',
261
+ grammar: SEQ_GRAMMAR,
262
+ help: {
263
+ summary: 'Count from one number to another',
264
+ description: 'Prints the numbers from FIRST to LAST by STEP, one per line, as seq does: seq 5 is 1 to 5, seq 2 10 is 2 to 10, seq 10 -2 0 counts down. At most 100000 numbers.',
265
+ examples: ['seq 5', 'seq 0 5 30', 'seq 10 -1 1 | tac'],
266
+ posix: { group: 'Text', differs: 'as seq' },
267
+ },
268
+ holds: [],
269
+ handler: async (args) => seq_run(args.operands.numbers),
270
+ });
271
+ /**
272
+ * `seq` over words already split: the declaration's parse and handler.
273
+ *
274
+ * @param args - The words after `seq`.
275
+ * @returns The numbers, or the refusal of a bad line.
276
+ *
277
+ * @example
278
+ * ```ts
279
+ * await builtin_seq(['3']);
280
+ * ```
281
+ */
107
282
  export async function builtin_seq(args) {
108
- const answer = seq_numbers(args);
283
+ return declaredCommand_run(seqCommand, args);
284
+ }
285
+ /**
286
+ * Prints a sequence of numbers.
287
+ *
288
+ * @param nums - FIRST, STEP and LAST as the line gave them (one to three).
289
+ * @returns The numbers one per line, or a refusal.
290
+ *
291
+ * @example
292
+ * ```ts
293
+ * await seq_run([1, 2, 9]);
294
+ * ```
295
+ */
296
+ export async function seq_run(nums) {
297
+ const answer = seq_numbers(nums);
109
298
  if ('refusal' in answer)
110
299
  return envelope_error('', undefined, `${answer.refusal}\n`);
111
300
  const note = answer.numbers.length >= SEQ_MAX ? chalk.gray(`seq: stopped at ${SEQ_MAX} numbers\n`) : '';
112
301
  return envelope_ok(`${answer.numbers.join('\n')}\n${note}`, { kind: 'games.seq', data: { numbers: answer.numbers } });
113
302
  }
114
- /** `shuf [words...]`: lines piped in, or the words given, in a random order. */
303
+ /** What a `shuf` line may hold. */
304
+ const SHUF_GRAMMAR = {
305
+ operands: [{ name: 'words', kind: 'word', optional: true, repeat: true, summary: 'The words to shuffle (default: the lines piped in)' }],
306
+ };
307
+ /**
308
+ * `shuf [words...]`: the declaration.
309
+ *
310
+ * @example
311
+ * ```ts
312
+ * commands_register({ declarations: [shufCommand] });
313
+ * ```
314
+ */
315
+ export const shufCommand = command_declare({
316
+ name: 'shuf',
317
+ grammar: SHUF_GRAMMAR,
318
+ help: {
319
+ summary: 'Shuffle lines',
320
+ description: 'Prints the lines piped in, or the words given, in a random order.',
321
+ examples: ['shuf a b c d', 'ls | shuf', 'seq 10 | shuf'],
322
+ posix: { group: 'Text', differs: 'reads a pipe or its words' },
323
+ },
324
+ handler: async (args) => shuf_run(args.operands.words),
325
+ });
326
+ /**
327
+ * `shuf` over words already split: the declaration's parse and handler.
328
+ *
329
+ * @param args - The words after `shuf`.
330
+ * @returns The shuffled lines, or the refusal of a bad line.
331
+ *
332
+ * @example
333
+ * ```ts
334
+ * await builtin_shuf(['a', 'b']);
335
+ * ```
336
+ */
115
337
  export async function builtin_shuf(args) {
338
+ return declaredCommand_run(shufCommand, args);
339
+ }
340
+ /**
341
+ * Shuffles the lines piped in, else the words given.
342
+ *
343
+ * @param words - The words given.
344
+ * @returns The lines in a random order, or a refusal when there are none.
345
+ *
346
+ * @example
347
+ * ```ts
348
+ * await shuf_run(['a', 'b', 'c']);
349
+ * ```
350
+ */
351
+ export async function shuf_run(words) {
116
352
  const piped = text_input([]);
117
353
  const lines = piped !== null
118
354
  ? piped.replace(/\n$/, '').split('\n')
119
- : args;
355
+ : [...words];
120
356
  if (lines.length === 0)
121
357
  return envelope_error('', undefined, 'shuf: nothing to shuffle (pipe lines in, or give words)\n');
122
358
  const out = lines_shuffle(lines);
123
359
  return envelope_ok(`${out.join('\n')}\n`, { kind: 'games.shuf', data: { lines: out } });
124
360
  }
125
- /** `rot13 [text]` */
361
+ /** What a `rot13` line may hold. */
362
+ const ROT13_GRAMMAR = { operands: [TEXT_OPERAND] };
363
+ /**
364
+ * `rot13 [text]`: the declaration.
365
+ *
366
+ * @example
367
+ * ```ts
368
+ * commands_register({ declarations: [rot13Command] });
369
+ * ```
370
+ */
371
+ export const rot13Command = command_declare({
372
+ name: 'rot13',
373
+ grammar: ROT13_GRAMMAR,
374
+ help: {
375
+ summary: 'Turn letters half the alphabet round',
376
+ description: 'ROT13: each letter moved thirteen places, so applying it twice gives the text back. Reads what is piped in, else the words given.',
377
+ examples: ['rot13 hello', 'fortune | rot13 | rot13'],
378
+ },
379
+ holds: [],
380
+ handler: async (args) => rot13_run(args.operands.text),
381
+ });
382
+ /**
383
+ * `rot13` over words already split: the declaration's parse and handler.
384
+ *
385
+ * @param args - The words after `rot13`.
386
+ * @returns The turned text, or the refusal of a bad line.
387
+ *
388
+ * @example
389
+ * ```ts
390
+ * await builtin_rot13(['hello']);
391
+ * ```
392
+ */
126
393
  export async function builtin_rot13(args) {
127
- const text = text_input(args);
394
+ return declaredCommand_run(rot13Command, args);
395
+ }
396
+ /**
397
+ * Turns the piped text, else the words, thirteen places round the alphabet.
398
+ *
399
+ * @param words - The words given.
400
+ * @returns The turned text, or a refusal when there is none.
401
+ *
402
+ * @example
403
+ * ```ts
404
+ * await rot13_run(['hello']); // uryyb
405
+ * ```
406
+ */
407
+ export async function rot13_run(words) {
408
+ const text = text_input(words);
128
409
  if (text === null)
129
410
  return envelope_error('', undefined, 'rot13: nothing to turn (pipe text in, or give it)\n');
130
411
  const out = text_rot13(text.replace(/\n$/, ''));
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/builtins/games/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/builtins/games/text.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,72 @@
1
1
  import { CommandEnvelope } from '@fnndsc/menu';
2
2
  /**
3
- * `trek [--classic] [-f | -s] [--seed N]`.
3
+ * `trek [--classic] [-f | -s] [--seed N] [--credits]`: the declaration.
4
4
  *
5
- * @param args - The words after the command.
6
- * @returns The game's end.
5
+ * @example
6
+ * ```ts
7
+ * commands_register({ declarations: [trekCommand] });
8
+ * ```
9
+ */
10
+ export declare const trekCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
11
+ readonly options: {
12
+ readonly classic: {
13
+ readonly long: "classic";
14
+ readonly summary: "Show the scans as printed in 1976, without glyphs or colour";
15
+ };
16
+ readonly fast: {
17
+ readonly short: "f";
18
+ readonly summary: "The original fast mode";
19
+ };
20
+ readonly slow: {
21
+ readonly short: "s";
22
+ readonly summary: "The original slow mode";
23
+ };
24
+ readonly seed: {
25
+ readonly long: "seed";
26
+ readonly summary: "Replay the galaxy of this seed";
27
+ readonly value: {
28
+ readonly name: "N";
29
+ readonly kind: "int";
30
+ };
31
+ };
32
+ readonly credits: {
33
+ readonly long: "credits";
34
+ readonly summary: "Name who made the game, instead of playing it";
35
+ };
36
+ };
37
+ }>;
38
+ /**
39
+ * `trek` over words already split: the declaration's parse and handler.
40
+ *
41
+ * @param args - The words after `trek`.
42
+ * @returns The game's end, or the refusal of a bad line.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * await builtin_trek(['--seed', '42']);
47
+ * ```
7
48
  */
8
49
  export declare function builtin_trek(args: string[]): Promise<CommandEnvelope>;
50
+ /**
51
+ * Plays `trek`, or names who made it.
52
+ *
53
+ * @param options - The line's options.
54
+ * @param options.classic - The original look.
55
+ * @param options.fast - The original fast mode.
56
+ * @param options.slow - The original slow mode (it wins over fast).
57
+ * @param options.seed - The galaxy's seed; absent, the clock's.
58
+ * @param options.credits - Name the makers instead of playing.
59
+ * @returns The game's end.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * await trek_run({ classic: true, fast: false, slow: false, seed: 42, credits: false });
64
+ * ```
65
+ */
66
+ export declare function trek_run(options: {
67
+ readonly classic: boolean;
68
+ readonly fast: boolean;
69
+ readonly slow: boolean;
70
+ readonly seed: number | undefined;
71
+ readonly credits: boolean;
72
+ }): Promise<CommandEnvelope>;
@@ -13,7 +13,9 @@
13
13
  */
14
14
  import chalk from 'chalk';
15
15
  import { envelope_error, envelope_ok } from '@fnndsc/menu';
16
- import { TREK_CREDITS, trek_play, trekArgs_parse } from 'bsd-trek';
16
+ import { TREK_CREDITS, trek_play } from 'bsd-trek';
17
+ import { command_declare } from '../../core/commandDeclaration.js';
18
+ import { declaredCommand_run } from '../../core/commandParse.js';
17
19
  import { repl_question } from '../../core/question.js';
18
20
  import { sink_get } from '../../core/sink.js';
19
21
  /** The session's saved game: `dump` writes it, a `restart` length reads it back. */
@@ -39,21 +41,72 @@ const SESSION_TERMINAL = {
39
41
  seconds_sleep: (seconds) => new Promise((resolve) => { setTimeout(resolve, seconds * 1000); }),
40
42
  state_show: (state) => { sink_get().event_write?.('games.trek.state', state); },
41
43
  };
44
+ /** What a `trek` line may hold: the look, the pace, the galaxy's seed, the credits. */
45
+ const TREK_GRAMMAR = {
46
+ options: {
47
+ classic: { long: 'classic', summary: 'Show the scans as printed in 1976, without glyphs or colour' },
48
+ fast: { short: 'f', summary: 'The original fast mode' },
49
+ slow: { short: 's', summary: 'The original slow mode' },
50
+ seed: { long: 'seed', summary: 'Replay the galaxy of this seed', value: { name: 'N', kind: 'int' } },
51
+ credits: { long: 'credits', summary: 'Name who made the game, instead of playing it' },
52
+ },
53
+ };
42
54
  /**
43
- * `trek [--classic] [-f | -s] [--seed N]`.
55
+ * `trek [--classic] [-f | -s] [--seed N] [--credits]`: the declaration.
44
56
  *
45
- * @param args - The words after the command.
46
- * @returns The game's end.
57
+ * @example
58
+ * ```ts
59
+ * commands_register({ declarations: [trekCommand] });
60
+ * ```
61
+ */
62
+ export const trekCommand = command_declare({
63
+ name: 'trek',
64
+ grammar: TREK_GRAMMAR,
65
+ help: {
66
+ summary: 'The 1976 Berkeley space war game (BSD trek)',
67
+ description: 'Command a starship against an invading fleet across an 8×8 galaxy of quadrants, by question: srscan, lrscan, move, phasers, torpedo, shield, dock, computer and the rest (? at any prompt lists the answers it takes). Answers can be typed ahead on one line, as in the original. The scans wear glyphs and colours; --classic shows them as printed in 1976. -f and -s are the original fast and slow modes; --seed N replays a galaxy; --credits (or credits in the game) names who made it. terminate ends a game; answer no to Another game to leave.',
68
+ examples: ['trek', 'trek --classic', 'trek --seed 42', 'trek --credits'],
69
+ },
70
+ handler: async (args) => trek_run(args.options),
71
+ });
72
+ /**
73
+ * `trek` over words already split: the declaration's parse and handler.
74
+ *
75
+ * @param args - The words after `trek`.
76
+ * @returns The game's end, or the refusal of a bad line.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * await builtin_trek(['--seed', '42']);
81
+ * ```
47
82
  */
48
83
  export async function builtin_trek(args) {
49
- const asked = trekArgs_parse(args);
50
- if ('refusal' in asked)
51
- return envelope_error('', undefined, `${asked.refusal}\n`);
52
- if (asked.credits)
84
+ return declaredCommand_run(trekCommand, args);
85
+ }
86
+ /**
87
+ * Plays `trek`, or names who made it.
88
+ *
89
+ * @param options - The line's options.
90
+ * @param options.classic - The original look.
91
+ * @param options.fast - The original fast mode.
92
+ * @param options.slow - The original slow mode (it wins over fast).
93
+ * @param options.seed - The galaxy's seed; absent, the clock's.
94
+ * @param options.credits - Name the makers instead of playing.
95
+ * @returns The game's end.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * await trek_run({ classic: true, fast: false, slow: false, seed: 42, credits: false });
100
+ * ```
101
+ */
102
+ export async function trek_run(options) {
103
+ if (options.credits)
53
104
  return envelope_ok(TREK_CREDITS, { kind: 'games.trek.credits', data: {} });
105
+ const seed = options.seed ?? Math.floor(Date.now() / 1000);
106
+ const fast = options.slow ? 0 : options.fast ? 2 : 1;
54
107
  try {
55
- const code = await trek_play(SESSION_TERMINAL, { seed: asked.seed, fast: asked.fast, trace: 0, styled: !asked.classic && chalk.level > 0 }, TREK_DUMP);
56
- return envelope_ok('', { kind: 'games.trek', data: { seed: asked.seed, exit: code } });
108
+ const code = await trek_play(SESSION_TERMINAL, { seed, fast, trace: 0, styled: !options.classic && chalk.level > 0 }, TREK_DUMP);
109
+ return envelope_ok('', { kind: 'games.trek', data: { seed, exit: code } });
57
110
  }
58
111
  catch (error) {
59
112
  return envelope_error('', undefined, `trek: cannot ask here (${error instanceof Error ? error.message : String(error)})\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"trek.js","sourceRoot":"","sources":["../../../src/builtins/games/trek.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trek.js","sourceRoot":"","sources":["../../../src/builtins/games/trek.ts"],"names":[],"mappings":"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"}