@platforma-sdk/bootstrap 5.2.51 → 5.2.53

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 (176) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/block.cjs +106 -146
  3. package/dist/block.cjs.map +1 -1
  4. package/dist/block.js +100 -125
  5. package/dist/block.js.map +1 -1
  6. package/dist/cmd-opts.cjs +87 -177
  7. package/dist/cmd-opts.cjs.map +1 -1
  8. package/dist/cmd-opts.js +87 -172
  9. package/dist/cmd-opts.js.map +1 -1
  10. package/dist/commands/create-block.cjs +19 -20
  11. package/dist/commands/create-block.cjs.map +1 -1
  12. package/dist/commands/create-block.d.ts +12 -7
  13. package/dist/commands/create-block.js +17 -17
  14. package/dist/commands/create-block.js.map +1 -1
  15. package/dist/commands/reset.cjs +18 -21
  16. package/dist/commands/reset.cjs.map +1 -1
  17. package/dist/commands/reset.d.ts +12 -7
  18. package/dist/commands/reset.js +16 -18
  19. package/dist/commands/reset.js.map +1 -1
  20. package/dist/commands/start/docker/s3.cjs +64 -67
  21. package/dist/commands/start/docker/s3.cjs.map +1 -1
  22. package/dist/commands/start/docker/s3.d.ts +32 -27
  23. package/dist/commands/start/docker/s3.js +61 -64
  24. package/dist/commands/start/docker/s3.js.map +1 -1
  25. package/dist/commands/start/docker.cjs +64 -67
  26. package/dist/commands/start/docker.cjs.map +1 -1
  27. package/dist/commands/start/docker.d.ts +32 -27
  28. package/dist/commands/start/docker.js +61 -64
  29. package/dist/commands/start/docker.js.map +1 -1
  30. package/dist/commands/start/local/s3.cjs +101 -135
  31. package/dist/commands/start/local/s3.cjs.map +1 -1
  32. package/dist/commands/start/local/s3.d.ts +36 -31
  33. package/dist/commands/start/local/s3.js +97 -113
  34. package/dist/commands/start/local/s3.js.map +1 -1
  35. package/dist/commands/start/local.cjs +95 -122
  36. package/dist/commands/start/local.cjs.map +1 -1
  37. package/dist/commands/start/local.d.ts +34 -29
  38. package/dist/commands/start/local.js +91 -100
  39. package/dist/commands/start/local.js.map +1 -1
  40. package/dist/commands/start.cjs +18 -21
  41. package/dist/commands/start.cjs.map +1 -1
  42. package/dist/commands/start.d.ts +12 -7
  43. package/dist/commands/start.js +16 -18
  44. package/dist/commands/start.js.map +1 -1
  45. package/dist/commands/stop.cjs +22 -27
  46. package/dist/commands/stop.cjs.map +1 -1
  47. package/dist/commands/stop.d.ts +12 -7
  48. package/dist/commands/stop.js +20 -24
  49. package/dist/commands/stop.js.map +1 -1
  50. package/dist/commands/svc/create/arg-parser.cjs +102 -172
  51. package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
  52. package/dist/commands/svc/create/arg-parser.js +102 -171
  53. package/dist/commands/svc/create/arg-parser.js.map +1 -1
  54. package/dist/commands/svc/create/docker/s3.cjs +78 -96
  55. package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
  56. package/dist/commands/svc/create/docker/s3.d.ts +35 -30
  57. package/dist/commands/svc/create/docker/s3.js +75 -93
  58. package/dist/commands/svc/create/docker/s3.js.map +1 -1
  59. package/dist/commands/svc/create/docker.cjs +82 -103
  60. package/dist/commands/svc/create/docker.cjs.map +1 -1
  61. package/dist/commands/svc/create/docker.d.ts +35 -30
  62. package/dist/commands/svc/create/docker.js +79 -100
  63. package/dist/commands/svc/create/docker.js.map +1 -1
  64. package/dist/commands/svc/create/local/s3.cjs +107 -139
  65. package/dist/commands/svc/create/local/s3.cjs.map +1 -1
  66. package/dist/commands/svc/create/local/s3.d.ts +39 -34
  67. package/dist/commands/svc/create/local/s3.js +103 -117
  68. package/dist/commands/svc/create/local/s3.js.map +1 -1
  69. package/dist/commands/svc/create/local.cjs +101 -138
  70. package/dist/commands/svc/create/local.cjs.map +1 -1
  71. package/dist/commands/svc/create/local.d.ts +37 -32
  72. package/dist/commands/svc/create/local.js +97 -116
  73. package/dist/commands/svc/create/local.js.map +1 -1
  74. package/dist/commands/svc/delete.cjs +36 -38
  75. package/dist/commands/svc/delete.cjs.map +1 -1
  76. package/dist/commands/svc/delete.d.ts +16 -11
  77. package/dist/commands/svc/delete.js +34 -35
  78. package/dist/commands/svc/delete.js.map +1 -1
  79. package/dist/commands/svc/down.cjs +27 -30
  80. package/dist/commands/svc/down.cjs.map +1 -1
  81. package/dist/commands/svc/down.d.ts +15 -10
  82. package/dist/commands/svc/down.js +25 -27
  83. package/dist/commands/svc/down.js.map +1 -1
  84. package/dist/commands/svc/list.cjs +25 -29
  85. package/dist/commands/svc/list.cjs.map +1 -1
  86. package/dist/commands/svc/list.d.ts +9 -5
  87. package/dist/commands/svc/list.js +23 -26
  88. package/dist/commands/svc/list.js.map +1 -1
  89. package/dist/commands/svc/up.cjs +33 -49
  90. package/dist/commands/svc/up.cjs.map +1 -1
  91. package/dist/commands/svc/up.d.ts +15 -10
  92. package/dist/commands/svc/up.js +31 -46
  93. package/dist/commands/svc/up.js.map +1 -1
  94. package/dist/core.cjs +712 -881
  95. package/dist/core.cjs.map +1 -1
  96. package/dist/core.js +709 -877
  97. package/dist/core.js.map +1 -1
  98. package/dist/index.cjs +36 -36
  99. package/dist/index.cjs.map +1 -1
  100. package/dist/index.d.ts +37 -33
  101. package/dist/index.js +35 -34
  102. package/dist/index.js.map +1 -1
  103. package/dist/package.cjs +15 -36
  104. package/dist/package.cjs.map +1 -1
  105. package/dist/package.js +14 -14
  106. package/dist/package.js.map +1 -1
  107. package/dist/platforma.cjs +119 -148
  108. package/dist/platforma.cjs.map +1 -1
  109. package/dist/platforma.js +114 -122
  110. package/dist/platforma.js.map +1 -1
  111. package/dist/run.cjs +55 -58
  112. package/dist/run.cjs.map +1 -1
  113. package/dist/run.js +56 -56
  114. package/dist/run.js.map +1 -1
  115. package/dist/state.cjs +114 -141
  116. package/dist/state.cjs.map +1 -1
  117. package/dist/state.js +110 -139
  118. package/dist/state.js.map +1 -1
  119. package/dist/templates/compose.cjs +38 -65
  120. package/dist/templates/compose.cjs.map +1 -1
  121. package/dist/templates/compose.js +35 -63
  122. package/dist/templates/compose.js.map +1 -1
  123. package/dist/templates/pl-config.cjs +163 -165
  124. package/dist/templates/pl-config.cjs.map +1 -1
  125. package/dist/templates/pl-config.js +161 -163
  126. package/dist/templates/pl-config.js.map +1 -1
  127. package/dist/templates/types.cjs +24 -23
  128. package/dist/templates/types.cjs.map +1 -1
  129. package/dist/templates/types.js +24 -22
  130. package/dist/templates/types.js.map +1 -1
  131. package/dist/util.cjs +57 -74
  132. package/dist/util.cjs.map +1 -1
  133. package/dist/util.js +51 -72
  134. package/dist/util.js.map +1 -1
  135. package/package.json +7 -7
  136. package/dist/block.d.ts +0 -25
  137. package/dist/block.d.ts.map +0 -1
  138. package/dist/cmd-opts.d.ts +0 -89
  139. package/dist/cmd-opts.d.ts.map +0 -1
  140. package/dist/commands/create-block.d.ts.map +0 -1
  141. package/dist/commands/reset.d.ts.map +0 -1
  142. package/dist/commands/start/docker/s3.d.ts.map +0 -1
  143. package/dist/commands/start/docker.d.ts.map +0 -1
  144. package/dist/commands/start/local/s3.d.ts.map +0 -1
  145. package/dist/commands/start/local.d.ts.map +0 -1
  146. package/dist/commands/start.d.ts.map +0 -1
  147. package/dist/commands/stop.d.ts.map +0 -1
  148. package/dist/commands/svc/create/arg-parser.d.ts +0 -43
  149. package/dist/commands/svc/create/arg-parser.d.ts.map +0 -1
  150. package/dist/commands/svc/create/docker/s3.d.ts.map +0 -1
  151. package/dist/commands/svc/create/docker.d.ts.map +0 -1
  152. package/dist/commands/svc/create/local/s3.d.ts.map +0 -1
  153. package/dist/commands/svc/create/local.d.ts.map +0 -1
  154. package/dist/commands/svc/delete.d.ts.map +0 -1
  155. package/dist/commands/svc/down.d.ts.map +0 -1
  156. package/dist/commands/svc/list.d.ts.map +0 -1
  157. package/dist/commands/svc/up.d.ts.map +0 -1
  158. package/dist/core.d.ts +0 -105
  159. package/dist/core.d.ts.map +0 -1
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/package.d.ts +0 -7
  162. package/dist/package.d.ts.map +0 -1
  163. package/dist/platforma.d.ts +0 -24
  164. package/dist/platforma.d.ts.map +0 -1
  165. package/dist/run.d.ts +0 -13
  166. package/dist/run.d.ts.map +0 -1
  167. package/dist/state.d.ts +0 -63
  168. package/dist/state.d.ts.map +0 -1
  169. package/dist/templates/compose.d.ts +0 -14
  170. package/dist/templates/compose.d.ts.map +0 -1
  171. package/dist/templates/pl-config.d.ts +0 -6
  172. package/dist/templates/pl-config.d.ts.map +0 -1
  173. package/dist/templates/types.d.ts +0 -138
  174. package/dist/templates/types.d.ts.map +0 -1
  175. package/dist/util.d.ts +0 -18
  176. package/dist/util.d.ts.map +0 -1
@@ -1,175 +1,105 @@
1
- 'use strict';
2
1
 
3
- /**
4
- * Enhanced command line argument parser for OCLIF commands
5
- * Handles both known and unknown flags
6
- */
7
- class ArgParser {
8
- knownFlags;
9
- flagDefinitions;
10
- constructor(flags) {
11
- this.knownFlags = new Set(Object.keys(flags));
12
- this.flagDefinitions = new Map();
13
- // Analyze flag definitions
14
- for (const [name, flag] of Object.entries(flags)) {
15
- if (flag.type) {
16
- this.flagDefinitions.set(name, {
17
- name,
18
- type: flag.type,
19
- required: flag.required || false,
20
- default: flag.default,
21
- multiple: flag.multiple || false,
22
- });
23
- }
24
- }
25
- }
26
- /**
27
- * Parse command line arguments
28
- */
29
- parse(argv) {
30
- const result = {
31
- instanceName: "",
32
- knownFlags: {},
33
- unknownFlags: [],
34
- positionalArgs: [],
35
- };
36
- let i = 0;
37
- while (i < argv.length) {
38
- const arg = argv[i];
39
- if (arg.startsWith("--")) {
40
- // Handle flag
41
- if (arg.includes("=")) {
42
- // Flag with value: --flag=value
43
- const [flagName, value] = arg.split("=", 2);
44
- const cleanFlagName = flagName.substring(2);
45
- if (this.knownFlags.has(cleanFlagName)) {
46
- result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);
47
- }
48
- else {
49
- result.unknownFlags.push(arg);
50
- }
51
- }
52
- else {
53
- // Flag without value: --flag or --flag value
54
- const flagName = arg.substring(2);
55
- if (this.knownFlags.has(flagName)) {
56
- const flagDef = this.flagDefinitions.get(flagName);
57
- if (flagDef?.type === "boolean") {
58
- // Boolean flag
59
- result.knownFlags[flagName] = true;
60
- }
61
- else if (i + 1 < argv.length && !argv[i + 1].startsWith("-")) {
62
- // Flag with value in next argument
63
- const value = argv[i + 1];
64
- result.knownFlags[flagName] = this.parseFlagValue(flagName, value);
65
- i++; // Skip next argument
66
- }
67
- else {
68
- // Flag without value
69
- result.knownFlags[flagName] = true;
70
- }
71
- }
72
- else {
73
- result.unknownFlags.push(arg);
74
- }
75
- }
76
- }
77
- else if (arg.startsWith("-") && arg.length > 1) {
78
- // Short flags: -f, -abc
79
- const shortFlags = arg.substring(1).split("");
80
- for (const shortFlag of shortFlags) {
81
- // Find long name for short flag
82
- const longFlagName = this.findLongFlagName(shortFlag);
83
- if (longFlagName) {
84
- result.knownFlags[longFlagName] = true;
85
- }
86
- else {
87
- result.unknownFlags.push(`-${shortFlag}`);
88
- }
89
- }
90
- }
91
- else {
92
- // Positional argument
93
- if (!result.instanceName) {
94
- result.instanceName = arg;
95
- }
96
- else {
97
- result.positionalArgs.push(arg);
98
- }
99
- }
100
- i++;
101
- }
102
- // Set default values
103
- this.setDefaultValues(result.knownFlags);
104
- return result;
105
- }
106
- /**
107
- * Parse flag value according to its type
108
- */
109
- parseFlagValue(flagName, value) {
110
- const flagDef = this.flagDefinitions.get(flagName);
111
- if (!flagDef) {
112
- return value;
113
- }
114
- switch (flagDef.type) {
115
- case "number":
116
- const num = parseFloat(value);
117
- if (isNaN(num)) {
118
- throw new Error(`Invalid number value for flag --${flagName}: ${value}`);
119
- }
120
- return num;
121
- case "boolean":
122
- if (value === "true" || value === "1")
123
- return true;
124
- if (value === "false" || value === "0")
125
- return false;
126
- return Boolean(value);
127
- case "array":
128
- if (flagDef.multiple) {
129
- // For multiple flags create array
130
- // This will be handled in main parse method
131
- return [value];
132
- }
133
- return value;
134
- default:
135
- return value;
136
- }
137
- }
138
- /**
139
- * Find long flag name by short flag
140
- */
141
- findLongFlagName(shortFlag) {
142
- // Simple implementation - can be extended
143
- for (const flagName of this.knownFlags) {
144
- if (flagName.startsWith(shortFlag)) {
145
- return flagName;
146
- }
147
- }
148
- return null;
149
- }
150
- /**
151
- * Set default values for flags
152
- */
153
- setDefaultValues(flags) {
154
- for (const [name, flagDef] of this.flagDefinitions) {
155
- if (flagDef.default !== undefined && flags[name] === undefined) {
156
- flags[name] = flagDef.default;
157
- }
158
- }
159
- }
160
- /**
161
- * Validate required flags
162
- */
163
- validateRequired(flags) {
164
- const errors = [];
165
- for (const [name, flagDef] of this.flagDefinitions) {
166
- if (flagDef.required && flags[name] === undefined) {
167
- errors.push(`Required flag --${name} is missing`);
168
- }
169
- }
170
- return errors;
171
- }
172
- }
2
+ //#region src/commands/svc/create/arg-parser.ts
3
+ var ArgParser = class {
4
+ knownFlags;
5
+ flagDefinitions;
6
+ constructor(flags) {
7
+ this.knownFlags = new Set(Object.keys(flags));
8
+ this.flagDefinitions = /* @__PURE__ */ new Map();
9
+ for (const [name, flag] of Object.entries(flags)) if (flag.type) this.flagDefinitions.set(name, {
10
+ name,
11
+ type: flag.type,
12
+ required: flag.required || false,
13
+ default: flag.default,
14
+ multiple: flag.multiple || false
15
+ });
16
+ }
17
+ /**
18
+ * Parse command line arguments
19
+ */
20
+ parse(argv) {
21
+ const result = {
22
+ instanceName: "",
23
+ knownFlags: {},
24
+ unknownFlags: [],
25
+ positionalArgs: []
26
+ };
27
+ let i = 0;
28
+ while (i < argv.length) {
29
+ const arg = argv[i];
30
+ if (arg.startsWith("--")) if (arg.includes("=")) {
31
+ const [flagName, value] = arg.split("=", 2);
32
+ const cleanFlagName = flagName.substring(2);
33
+ if (this.knownFlags.has(cleanFlagName)) result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);
34
+ else result.unknownFlags.push(arg);
35
+ } else {
36
+ const flagName = arg.substring(2);
37
+ if (this.knownFlags.has(flagName)) if (this.flagDefinitions.get(flagName)?.type === "boolean") result.knownFlags[flagName] = true;
38
+ else if (i + 1 < argv.length && !argv[i + 1].startsWith("-")) {
39
+ const value = argv[i + 1];
40
+ result.knownFlags[flagName] = this.parseFlagValue(flagName, value);
41
+ i++;
42
+ } else result.knownFlags[flagName] = true;
43
+ else result.unknownFlags.push(arg);
44
+ }
45
+ else if (arg.startsWith("-") && arg.length > 1) {
46
+ const shortFlags = arg.substring(1).split("");
47
+ for (const shortFlag of shortFlags) {
48
+ const longFlagName = this.findLongFlagName(shortFlag);
49
+ if (longFlagName) result.knownFlags[longFlagName] = true;
50
+ else result.unknownFlags.push(`-${shortFlag}`);
51
+ }
52
+ } else if (!result.instanceName) result.instanceName = arg;
53
+ else result.positionalArgs.push(arg);
54
+ i++;
55
+ }
56
+ this.setDefaultValues(result.knownFlags);
57
+ return result;
58
+ }
59
+ /**
60
+ * Parse flag value according to its type
61
+ */
62
+ parseFlagValue(flagName, value) {
63
+ const flagDef = this.flagDefinitions.get(flagName);
64
+ if (!flagDef) return value;
65
+ switch (flagDef.type) {
66
+ case "number":
67
+ const num = parseFloat(value);
68
+ if (isNaN(num)) throw new Error(`Invalid number value for flag --${flagName}: ${value}`);
69
+ return num;
70
+ case "boolean":
71
+ if (value === "true" || value === "1") return true;
72
+ if (value === "false" || value === "0") return false;
73
+ return Boolean(value);
74
+ case "array":
75
+ if (flagDef.multiple) return [value];
76
+ return value;
77
+ default: return value;
78
+ }
79
+ }
80
+ /**
81
+ * Find long flag name by short flag
82
+ */
83
+ findLongFlagName(shortFlag) {
84
+ for (const flagName of this.knownFlags) if (flagName.startsWith(shortFlag)) return flagName;
85
+ return null;
86
+ }
87
+ /**
88
+ * Set default values for flags
89
+ */
90
+ setDefaultValues(flags) {
91
+ for (const [name, flagDef] of this.flagDefinitions) if (flagDef.default !== void 0 && flags[name] === void 0) flags[name] = flagDef.default;
92
+ }
93
+ /**
94
+ * Validate required flags
95
+ */
96
+ validateRequired(flags) {
97
+ const errors = [];
98
+ for (const [name, flagDef] of this.flagDefinitions) if (flagDef.required && flags[name] === void 0) errors.push(`Required flag --${name} is missing`);
99
+ return errors;
100
+ }
101
+ };
173
102
 
103
+ //#endregion
174
104
  exports.ArgParser = ArgParser;
175
- //# sourceMappingURL=arg-parser.cjs.map
105
+ //# sourceMappingURL=arg-parser.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"arg-parser.cjs","sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: \"string\" | \"boolean\" | \"number\" | \"array\";\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n\n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false,\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: \"\",\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: [],\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith(\"--\")) {\n // Handle flag\n if (arg.includes(\"=\")) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split(\"=\", 2);\n const cleanFlagName = flagName.substring(2);\n\n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n\n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (flagDef?.type === \"boolean\") {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith(\"-\")) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith(\"-\") && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split(\"\");\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n\n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n\n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case \"number\":\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n\n case \"boolean\":\n if (value === \"true\" || value === \"1\") return true;\n if (value === \"false\" || value === \"0\") return false;\n return Boolean(value);\n\n case \"array\":\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n\n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n\n return errors;\n }\n}\n"],"names":[],"mappings":";;AAAA;;;AAGG;MAiBU,SAAS,CAAA;AACZ,IAAA,UAAU;AACV,IAAA,eAAe;AAEvB,IAAA,WAAA,CAAY,KAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;;AAGhC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE;oBAC7B,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;oBAChC,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,oBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;AACjC,iBAAA,CAAC;YACJ;QACF;IACF;AAEA;;AAEG;AACH,IAAA,KAAK,CAAC,IAAc,EAAA;AAClB,QAAA,MAAM,MAAM,GAAe;AACzB,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,cAAc,EAAE,EAAE;SACnB;QAED,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAEnB,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;AAExB,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAErB,oBAAA,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;oBAE3C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACtC,wBAAA,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC;oBAC9E;yBAAO;AACL,wBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC/B;gBACF;qBAAO;;oBAEL,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAElD,wBAAA,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE;;AAE/B,4BAAA,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI;wBACpC;6BAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;4BAE9D,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,4BAAA,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;4BAClE,CAAC,EAAE,CAAC;wBACN;6BAAO;;AAEL,4BAAA,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI;wBACpC;oBACF;yBAAO;AACL,wBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC/B;gBACF;YACF;AAAO,iBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEhD,gBAAA,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7C,gBAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;;oBAElC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;oBACrD,IAAI,YAAY,EAAE;AAChB,wBAAA,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI;oBACxC;yBAAO;wBACL,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;oBAC3C;gBACF;YACF;iBAAO;;AAEL,gBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACxB,oBAAA,MAAM,CAAC,YAAY,GAAG,GAAG;gBAC3B;qBAAO;AACL,oBAAA,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjC;YACF;AAEA,YAAA,CAAC,EAAE;QACL;;AAGA,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;AAExC,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;IACK,cAAc,CAAC,QAAgB,EAAE,KAAa,EAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;QAElD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,YAAA,KAAK,QAAQ;AACX,gBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,QAAQ,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAC;gBAC1E;AACA,gBAAA,OAAO,GAAG;AAEZ,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;AAAE,oBAAA,OAAO,IAAI;AAClD,gBAAA,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG;AAAE,oBAAA,OAAO,KAAK;AACpD,gBAAA,OAAO,OAAO,CAAC,KAAK,CAAC;AAEvB,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;;;oBAGpB,OAAO,CAAC,KAAK,CAAC;gBAChB;AACA,gBAAA,OAAO,KAAK;AAEd,YAAA;AACE,gBAAA,OAAO,KAAK;;IAElB;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,SAAiB,EAAA;;AAExC,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAClC,gBAAA,OAAO,QAAQ;YACjB;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,KAA0B,EAAA;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AAC9D,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO;YAC/B;QACF;IACF;AAEA;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAA0B,EAAA;QACzC,MAAM,MAAM,GAAa,EAAE;QAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;YAClD,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AACjD,gBAAA,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAA,WAAA,CAAa,CAAC;YACnD;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AACD;;;;"}
1
+ {"version":3,"file":"arg-parser.cjs","names":[],"sources":["../../../../src/commands/svc/create/arg-parser.ts"],"sourcesContent":["/**\n * Enhanced command line argument parser for OCLIF commands\n * Handles both known and unknown flags\n */\n\nexport interface ParsedArgs {\n instanceName: string;\n knownFlags: Record<string, any>;\n unknownFlags: string[];\n positionalArgs: string[];\n}\n\nexport interface FlagDefinition {\n name: string;\n type: \"string\" | \"boolean\" | \"number\" | \"array\";\n required?: boolean;\n default?: any;\n multiple?: boolean;\n}\n\nexport class ArgParser {\n private knownFlags: Set<string>;\n private flagDefinitions: Map<string, FlagDefinition>;\n\n constructor(flags: Record<string, any>) {\n this.knownFlags = new Set(Object.keys(flags));\n this.flagDefinitions = new Map();\n\n // Analyze flag definitions\n for (const [name, flag] of Object.entries(flags)) {\n if (flag.type) {\n this.flagDefinitions.set(name, {\n name,\n type: flag.type,\n required: flag.required || false,\n default: flag.default,\n multiple: flag.multiple || false,\n });\n }\n }\n }\n\n /**\n * Parse command line arguments\n */\n parse(argv: string[]): ParsedArgs {\n const result: ParsedArgs = {\n instanceName: \"\",\n knownFlags: {},\n unknownFlags: [],\n positionalArgs: [],\n };\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n\n if (arg.startsWith(\"--\")) {\n // Handle flag\n if (arg.includes(\"=\")) {\n // Flag with value: --flag=value\n const [flagName, value] = arg.split(\"=\", 2);\n const cleanFlagName = flagName.substring(2);\n\n if (this.knownFlags.has(cleanFlagName)) {\n result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);\n } else {\n result.unknownFlags.push(arg);\n }\n } else {\n // Flag without value: --flag or --flag value\n const flagName = arg.substring(2);\n\n if (this.knownFlags.has(flagName)) {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (flagDef?.type === \"boolean\") {\n // Boolean flag\n result.knownFlags[flagName] = true;\n } else if (i + 1 < argv.length && !argv[i + 1].startsWith(\"-\")) {\n // Flag with value in next argument\n const value = argv[i + 1];\n result.knownFlags[flagName] = this.parseFlagValue(flagName, value);\n i++; // Skip next argument\n } else {\n // Flag without value\n result.knownFlags[flagName] = true;\n }\n } else {\n result.unknownFlags.push(arg);\n }\n }\n } else if (arg.startsWith(\"-\") && arg.length > 1) {\n // Short flags: -f, -abc\n const shortFlags = arg.substring(1).split(\"\");\n for (const shortFlag of shortFlags) {\n // Find long name for short flag\n const longFlagName = this.findLongFlagName(shortFlag);\n if (longFlagName) {\n result.knownFlags[longFlagName] = true;\n } else {\n result.unknownFlags.push(`-${shortFlag}`);\n }\n }\n } else {\n // Positional argument\n if (!result.instanceName) {\n result.instanceName = arg;\n } else {\n result.positionalArgs.push(arg);\n }\n }\n\n i++;\n }\n\n // Set default values\n this.setDefaultValues(result.knownFlags);\n\n return result;\n }\n\n /**\n * Parse flag value according to its type\n */\n private parseFlagValue(flagName: string, value: string): any {\n const flagDef = this.flagDefinitions.get(flagName);\n\n if (!flagDef) {\n return value;\n }\n\n switch (flagDef.type) {\n case \"number\":\n const num = parseFloat(value);\n if (isNaN(num)) {\n throw new Error(`Invalid number value for flag --${flagName}: ${value}`);\n }\n return num;\n\n case \"boolean\":\n if (value === \"true\" || value === \"1\") return true;\n if (value === \"false\" || value === \"0\") return false;\n return Boolean(value);\n\n case \"array\":\n if (flagDef.multiple) {\n // For multiple flags create array\n // This will be handled in main parse method\n return [value];\n }\n return value;\n\n default:\n return value;\n }\n }\n\n /**\n * Find long flag name by short flag\n */\n private findLongFlagName(shortFlag: string): string | null {\n // Simple implementation - can be extended\n for (const flagName of this.knownFlags) {\n if (flagName.startsWith(shortFlag)) {\n return flagName;\n }\n }\n return null;\n }\n\n /**\n * Set default values for flags\n */\n private setDefaultValues(flags: Record<string, any>): void {\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.default !== undefined && flags[name] === undefined) {\n flags[name] = flagDef.default;\n }\n }\n }\n\n /**\n * Validate required flags\n */\n validateRequired(flags: Record<string, any>): string[] {\n const errors: string[] = [];\n\n for (const [name, flagDef] of this.flagDefinitions) {\n if (flagDef.required && flags[name] === undefined) {\n errors.push(`Required flag --${name} is missing`);\n }\n }\n\n return errors;\n }\n}\n"],"mappings":"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"}
@@ -1,173 +1,104 @@
1
- /**
2
- * Enhanced command line argument parser for OCLIF commands
3
- * Handles both known and unknown flags
4
- */
5
- class ArgParser {
6
- knownFlags;
7
- flagDefinitions;
8
- constructor(flags) {
9
- this.knownFlags = new Set(Object.keys(flags));
10
- this.flagDefinitions = new Map();
11
- // Analyze flag definitions
12
- for (const [name, flag] of Object.entries(flags)) {
13
- if (flag.type) {
14
- this.flagDefinitions.set(name, {
15
- name,
16
- type: flag.type,
17
- required: flag.required || false,
18
- default: flag.default,
19
- multiple: flag.multiple || false,
20
- });
21
- }
22
- }
23
- }
24
- /**
25
- * Parse command line arguments
26
- */
27
- parse(argv) {
28
- const result = {
29
- instanceName: "",
30
- knownFlags: {},
31
- unknownFlags: [],
32
- positionalArgs: [],
33
- };
34
- let i = 0;
35
- while (i < argv.length) {
36
- const arg = argv[i];
37
- if (arg.startsWith("--")) {
38
- // Handle flag
39
- if (arg.includes("=")) {
40
- // Flag with value: --flag=value
41
- const [flagName, value] = arg.split("=", 2);
42
- const cleanFlagName = flagName.substring(2);
43
- if (this.knownFlags.has(cleanFlagName)) {
44
- result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);
45
- }
46
- else {
47
- result.unknownFlags.push(arg);
48
- }
49
- }
50
- else {
51
- // Flag without value: --flag or --flag value
52
- const flagName = arg.substring(2);
53
- if (this.knownFlags.has(flagName)) {
54
- const flagDef = this.flagDefinitions.get(flagName);
55
- if (flagDef?.type === "boolean") {
56
- // Boolean flag
57
- result.knownFlags[flagName] = true;
58
- }
59
- else if (i + 1 < argv.length && !argv[i + 1].startsWith("-")) {
60
- // Flag with value in next argument
61
- const value = argv[i + 1];
62
- result.knownFlags[flagName] = this.parseFlagValue(flagName, value);
63
- i++; // Skip next argument
64
- }
65
- else {
66
- // Flag without value
67
- result.knownFlags[flagName] = true;
68
- }
69
- }
70
- else {
71
- result.unknownFlags.push(arg);
72
- }
73
- }
74
- }
75
- else if (arg.startsWith("-") && arg.length > 1) {
76
- // Short flags: -f, -abc
77
- const shortFlags = arg.substring(1).split("");
78
- for (const shortFlag of shortFlags) {
79
- // Find long name for short flag
80
- const longFlagName = this.findLongFlagName(shortFlag);
81
- if (longFlagName) {
82
- result.knownFlags[longFlagName] = true;
83
- }
84
- else {
85
- result.unknownFlags.push(`-${shortFlag}`);
86
- }
87
- }
88
- }
89
- else {
90
- // Positional argument
91
- if (!result.instanceName) {
92
- result.instanceName = arg;
93
- }
94
- else {
95
- result.positionalArgs.push(arg);
96
- }
97
- }
98
- i++;
99
- }
100
- // Set default values
101
- this.setDefaultValues(result.knownFlags);
102
- return result;
103
- }
104
- /**
105
- * Parse flag value according to its type
106
- */
107
- parseFlagValue(flagName, value) {
108
- const flagDef = this.flagDefinitions.get(flagName);
109
- if (!flagDef) {
110
- return value;
111
- }
112
- switch (flagDef.type) {
113
- case "number":
114
- const num = parseFloat(value);
115
- if (isNaN(num)) {
116
- throw new Error(`Invalid number value for flag --${flagName}: ${value}`);
117
- }
118
- return num;
119
- case "boolean":
120
- if (value === "true" || value === "1")
121
- return true;
122
- if (value === "false" || value === "0")
123
- return false;
124
- return Boolean(value);
125
- case "array":
126
- if (flagDef.multiple) {
127
- // For multiple flags create array
128
- // This will be handled in main parse method
129
- return [value];
130
- }
131
- return value;
132
- default:
133
- return value;
134
- }
135
- }
136
- /**
137
- * Find long flag name by short flag
138
- */
139
- findLongFlagName(shortFlag) {
140
- // Simple implementation - can be extended
141
- for (const flagName of this.knownFlags) {
142
- if (flagName.startsWith(shortFlag)) {
143
- return flagName;
144
- }
145
- }
146
- return null;
147
- }
148
- /**
149
- * Set default values for flags
150
- */
151
- setDefaultValues(flags) {
152
- for (const [name, flagDef] of this.flagDefinitions) {
153
- if (flagDef.default !== undefined && flags[name] === undefined) {
154
- flags[name] = flagDef.default;
155
- }
156
- }
157
- }
158
- /**
159
- * Validate required flags
160
- */
161
- validateRequired(flags) {
162
- const errors = [];
163
- for (const [name, flagDef] of this.flagDefinitions) {
164
- if (flagDef.required && flags[name] === undefined) {
165
- errors.push(`Required flag --${name} is missing`);
166
- }
167
- }
168
- return errors;
169
- }
170
- }
1
+ //#region src/commands/svc/create/arg-parser.ts
2
+ var ArgParser = class {
3
+ knownFlags;
4
+ flagDefinitions;
5
+ constructor(flags) {
6
+ this.knownFlags = new Set(Object.keys(flags));
7
+ this.flagDefinitions = /* @__PURE__ */ new Map();
8
+ for (const [name, flag] of Object.entries(flags)) if (flag.type) this.flagDefinitions.set(name, {
9
+ name,
10
+ type: flag.type,
11
+ required: flag.required || false,
12
+ default: flag.default,
13
+ multiple: flag.multiple || false
14
+ });
15
+ }
16
+ /**
17
+ * Parse command line arguments
18
+ */
19
+ parse(argv) {
20
+ const result = {
21
+ instanceName: "",
22
+ knownFlags: {},
23
+ unknownFlags: [],
24
+ positionalArgs: []
25
+ };
26
+ let i = 0;
27
+ while (i < argv.length) {
28
+ const arg = argv[i];
29
+ if (arg.startsWith("--")) if (arg.includes("=")) {
30
+ const [flagName, value] = arg.split("=", 2);
31
+ const cleanFlagName = flagName.substring(2);
32
+ if (this.knownFlags.has(cleanFlagName)) result.knownFlags[cleanFlagName] = this.parseFlagValue(cleanFlagName, value);
33
+ else result.unknownFlags.push(arg);
34
+ } else {
35
+ const flagName = arg.substring(2);
36
+ if (this.knownFlags.has(flagName)) if (this.flagDefinitions.get(flagName)?.type === "boolean") result.knownFlags[flagName] = true;
37
+ else if (i + 1 < argv.length && !argv[i + 1].startsWith("-")) {
38
+ const value = argv[i + 1];
39
+ result.knownFlags[flagName] = this.parseFlagValue(flagName, value);
40
+ i++;
41
+ } else result.knownFlags[flagName] = true;
42
+ else result.unknownFlags.push(arg);
43
+ }
44
+ else if (arg.startsWith("-") && arg.length > 1) {
45
+ const shortFlags = arg.substring(1).split("");
46
+ for (const shortFlag of shortFlags) {
47
+ const longFlagName = this.findLongFlagName(shortFlag);
48
+ if (longFlagName) result.knownFlags[longFlagName] = true;
49
+ else result.unknownFlags.push(`-${shortFlag}`);
50
+ }
51
+ } else if (!result.instanceName) result.instanceName = arg;
52
+ else result.positionalArgs.push(arg);
53
+ i++;
54
+ }
55
+ this.setDefaultValues(result.knownFlags);
56
+ return result;
57
+ }
58
+ /**
59
+ * Parse flag value according to its type
60
+ */
61
+ parseFlagValue(flagName, value) {
62
+ const flagDef = this.flagDefinitions.get(flagName);
63
+ if (!flagDef) return value;
64
+ switch (flagDef.type) {
65
+ case "number":
66
+ const num = parseFloat(value);
67
+ if (isNaN(num)) throw new Error(`Invalid number value for flag --${flagName}: ${value}`);
68
+ return num;
69
+ case "boolean":
70
+ if (value === "true" || value === "1") return true;
71
+ if (value === "false" || value === "0") return false;
72
+ return Boolean(value);
73
+ case "array":
74
+ if (flagDef.multiple) return [value];
75
+ return value;
76
+ default: return value;
77
+ }
78
+ }
79
+ /**
80
+ * Find long flag name by short flag
81
+ */
82
+ findLongFlagName(shortFlag) {
83
+ for (const flagName of this.knownFlags) if (flagName.startsWith(shortFlag)) return flagName;
84
+ return null;
85
+ }
86
+ /**
87
+ * Set default values for flags
88
+ */
89
+ setDefaultValues(flags) {
90
+ for (const [name, flagDef] of this.flagDefinitions) if (flagDef.default !== void 0 && flags[name] === void 0) flags[name] = flagDef.default;
91
+ }
92
+ /**
93
+ * Validate required flags
94
+ */
95
+ validateRequired(flags) {
96
+ const errors = [];
97
+ for (const [name, flagDef] of this.flagDefinitions) if (flagDef.required && flags[name] === void 0) errors.push(`Required flag --${name} is missing`);
98
+ return errors;
99
+ }
100
+ };
171
101
 
102
+ //#endregion
172
103
  export { ArgParser };
173
- //# sourceMappingURL=arg-parser.js.map
104
+ //# sourceMappingURL=arg-parser.js.map