shell-dsl 0.0.8 → 0.0.10

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 (89) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/commands/awk/awk.cjs +79 -32
  3. package/dist/cjs/src/commands/awk/awk.cjs.map +3 -3
  4. package/dist/cjs/src/commands/cat/cat.cjs +16 -3
  5. package/dist/cjs/src/commands/cat/cat.cjs.map +3 -3
  6. package/dist/cjs/src/commands/cp/cp.cjs +26 -20
  7. package/dist/cjs/src/commands/cp/cp.cjs.map +3 -3
  8. package/dist/cjs/src/commands/echo/echo.cjs +22 -7
  9. package/dist/cjs/src/commands/echo/echo.cjs.map +3 -3
  10. package/dist/cjs/src/commands/grep/grep.cjs +126 -140
  11. package/dist/cjs/src/commands/grep/grep.cjs.map +3 -3
  12. package/dist/cjs/src/commands/head/head.cjs +29 -14
  13. package/dist/cjs/src/commands/head/head.cjs.map +3 -3
  14. package/dist/cjs/src/commands/ls/ls.cjs +27 -27
  15. package/dist/cjs/src/commands/ls/ls.cjs.map +3 -3
  16. package/dist/cjs/src/commands/mkdir/mkdir.cjs +21 -10
  17. package/dist/cjs/src/commands/mkdir/mkdir.cjs.map +3 -3
  18. package/dist/cjs/src/commands/mv/mv.cjs +22 -15
  19. package/dist/cjs/src/commands/mv/mv.cjs.map +3 -3
  20. package/dist/cjs/src/commands/pwd/pwd.cjs +13 -1
  21. package/dist/cjs/src/commands/pwd/pwd.cjs.map +3 -3
  22. package/dist/cjs/src/commands/rm/rm.cjs +25 -22
  23. package/dist/cjs/src/commands/rm/rm.cjs.map +3 -3
  24. package/dist/cjs/src/commands/sed/sed.cjs +157 -18
  25. package/dist/cjs/src/commands/sed/sed.cjs.map +3 -3
  26. package/dist/cjs/src/commands/sort/sort.cjs +27 -24
  27. package/dist/cjs/src/commands/sort/sort.cjs.map +3 -3
  28. package/dist/cjs/src/commands/tail/tail.cjs +29 -14
  29. package/dist/cjs/src/commands/tail/tail.cjs.map +3 -3
  30. package/dist/cjs/src/commands/tee/tee.cjs +21 -10
  31. package/dist/cjs/src/commands/tee/tee.cjs.map +3 -3
  32. package/dist/cjs/src/commands/touch/touch.cjs +21 -10
  33. package/dist/cjs/src/commands/touch/touch.cjs.map +3 -3
  34. package/dist/cjs/src/commands/tree/tree.cjs +45 -48
  35. package/dist/cjs/src/commands/tree/tree.cjs.map +3 -3
  36. package/dist/cjs/src/commands/uniq/uniq.cjs +27 -24
  37. package/dist/cjs/src/commands/uniq/uniq.cjs.map +3 -3
  38. package/dist/cjs/src/commands/wc/wc.cjs +28 -24
  39. package/dist/cjs/src/commands/wc/wc.cjs.map +3 -3
  40. package/dist/cjs/src/utils/flag-parser.cjs +162 -0
  41. package/dist/cjs/src/utils/flag-parser.cjs.map +10 -0
  42. package/dist/cjs/src/utils/index.cjs +4 -2
  43. package/dist/cjs/src/utils/index.cjs.map +3 -3
  44. package/dist/mjs/package.json +1 -1
  45. package/dist/mjs/src/commands/awk/awk.mjs +79 -32
  46. package/dist/mjs/src/commands/awk/awk.mjs.map +3 -3
  47. package/dist/mjs/src/commands/cat/cat.mjs +16 -3
  48. package/dist/mjs/src/commands/cat/cat.mjs.map +3 -3
  49. package/dist/mjs/src/commands/cp/cp.mjs +26 -20
  50. package/dist/mjs/src/commands/cp/cp.mjs.map +3 -3
  51. package/dist/mjs/src/commands/echo/echo.mjs +22 -7
  52. package/dist/mjs/src/commands/echo/echo.mjs.map +3 -3
  53. package/dist/mjs/src/commands/grep/grep.mjs +126 -140
  54. package/dist/mjs/src/commands/grep/grep.mjs.map +3 -3
  55. package/dist/mjs/src/commands/head/head.mjs +29 -14
  56. package/dist/mjs/src/commands/head/head.mjs.map +3 -3
  57. package/dist/mjs/src/commands/ls/ls.mjs +27 -27
  58. package/dist/mjs/src/commands/ls/ls.mjs.map +3 -3
  59. package/dist/mjs/src/commands/mkdir/mkdir.mjs +21 -10
  60. package/dist/mjs/src/commands/mkdir/mkdir.mjs.map +3 -3
  61. package/dist/mjs/src/commands/mv/mv.mjs +22 -15
  62. package/dist/mjs/src/commands/mv/mv.mjs.map +3 -3
  63. package/dist/mjs/src/commands/pwd/pwd.mjs +13 -1
  64. package/dist/mjs/src/commands/pwd/pwd.mjs.map +3 -3
  65. package/dist/mjs/src/commands/rm/rm.mjs +25 -22
  66. package/dist/mjs/src/commands/rm/rm.mjs.map +3 -3
  67. package/dist/mjs/src/commands/sed/sed.mjs +157 -18
  68. package/dist/mjs/src/commands/sed/sed.mjs.map +3 -3
  69. package/dist/mjs/src/commands/sort/sort.mjs +27 -24
  70. package/dist/mjs/src/commands/sort/sort.mjs.map +3 -3
  71. package/dist/mjs/src/commands/tail/tail.mjs +29 -14
  72. package/dist/mjs/src/commands/tail/tail.mjs.map +3 -3
  73. package/dist/mjs/src/commands/tee/tee.mjs +21 -10
  74. package/dist/mjs/src/commands/tee/tee.mjs.map +3 -3
  75. package/dist/mjs/src/commands/touch/touch.mjs +21 -10
  76. package/dist/mjs/src/commands/touch/touch.mjs.map +3 -3
  77. package/dist/mjs/src/commands/tree/tree.mjs +45 -48
  78. package/dist/mjs/src/commands/tree/tree.mjs.map +3 -3
  79. package/dist/mjs/src/commands/uniq/uniq.mjs +27 -24
  80. package/dist/mjs/src/commands/uniq/uniq.mjs.map +3 -3
  81. package/dist/mjs/src/commands/wc/wc.mjs +28 -24
  82. package/dist/mjs/src/commands/wc/wc.mjs.map +3 -3
  83. package/dist/mjs/src/utils/flag-parser.mjs +132 -0
  84. package/dist/mjs/src/utils/flag-parser.mjs.map +10 -0
  85. package/dist/mjs/src/utils/index.mjs +6 -2
  86. package/dist/mjs/src/utils/index.mjs.map +3 -3
  87. package/dist/types/src/utils/flag-parser.d.ts +36 -0
  88. package/dist/types/src/utils/index.d.ts +1 -0
  89. package/package.json +1 -1
@@ -0,0 +1,36 @@
1
+ import type { Stderr } from "../types.ts";
2
+ export interface FlagDefinition {
3
+ short?: string;
4
+ long?: string;
5
+ takesValue?: boolean;
6
+ }
7
+ export interface CommandSpec {
8
+ name: string;
9
+ flags: FlagDefinition[];
10
+ usage: string;
11
+ /** If true, stop parsing flags after the first positional argument (like echo) */
12
+ stopAfterFirstPositional?: boolean;
13
+ }
14
+ export interface FlagError {
15
+ type: "unrecognized_option" | "missing_value";
16
+ option: string;
17
+ }
18
+ export interface ParseResult<T> {
19
+ flags: T;
20
+ args: string[];
21
+ error?: FlagError;
22
+ }
23
+ export interface FlagParser<T> {
24
+ parse: (args: string[]) => ParseResult<T>;
25
+ formatError: (error: FlagError) => string;
26
+ writeError: (error: FlagError, stderr: Stderr) => Promise<void>;
27
+ }
28
+ /**
29
+ * Creates a flag parser for a command with consistent error handling.
30
+ *
31
+ * @param spec - Command specification with name, valid flags, and usage string
32
+ * @param defaults - Default values for the flags object
33
+ * @param handler - Function to handle setting a flag value
34
+ * @returns Parser object with parse, formatError, and writeError methods
35
+ */
36
+ export declare function createFlagParser<T>(spec: CommandSpec, defaults: T, handler: (flags: T, flag: FlagDefinition, value?: string) => void): FlagParser<T>;
@@ -1 +1,2 @@
1
1
  export { escape, escapeForInterpolation } from "./escape.ts";
2
+ export { createFlagParser, type FlagDefinition, type CommandSpec, type FlagError, type ParseResult, type FlagParser, } from "./flag-parser.ts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shell-dsl",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "A sandboxed shell-style DSL for running scriptable command pipelines in-process without host OS access",
5
5
  "author": "ricsam <oss@ricsam.dev>",
6
6
  "license": "MIT",