MCPcopy Index your code
hub / github.com/callstack/agent-device / parseFlagValue

Function parseFlagValue

src/cli/parser/args.ts:207–272  ·  view source on GitHub ↗
(
  definition: FlagDefinition,
  token: string,
  inlineValue: string | undefined,
  nextArg: string | undefined,
)

Source from the content-addressed store, hash-verified

205}
206
207function parseFlagValue(
208 definition: FlagDefinition,
209 token: string,
210 inlineValue: string | undefined,
211 nextArg: string | undefined,
212): { value: unknown; consumeNext: boolean } {
213 if (definition.setValue !== undefined) {
214 if (inlineValue !== undefined) {
215 throw new AppError('INVALID_ARGS', `Flag ${token} does not take a value.`);
216 }
217 return { value: definition.setValue, consumeNext: false };
218 }
219 if (definition.type === 'boolean') {
220 if (inlineValue !== undefined) {
221 throw new AppError('INVALID_ARGS', `Flag ${token} does not take a value.`);
222 }
223 return { value: true, consumeNext: false };
224 }
225 if (definition.type === 'booleanOrString') {
226 if (inlineValue !== undefined) {
227 if (inlineValue.trim().length === 0) {
228 throw new AppError(
229 'INVALID_ARGS',
230 `Flag ${token} requires a non-empty value when provided.`,
231 );
232 }
233 return { value: inlineValue, consumeNext: false };
234 }
235 if (nextArg === undefined || looksLikeFlagToken(nextArg)) {
236 return { value: true, consumeNext: false };
237 }
238 if (shouldConsumeOptionalPathValue(nextArg)) {
239 return { value: nextArg, consumeNext: true };
240 }
241 return { value: true, consumeNext: false };
242 }
243
244 const value = inlineValue ?? nextArg;
245 if (value === undefined) {
246 throw new AppError('INVALID_ARGS', `Flag ${token} requires a value.`);
247 }
248 if (inlineValue === undefined && looksLikeFlagToken(value)) {
249 throw new AppError('INVALID_ARGS', `Flag ${token} requires a value.`);
250 }
251
252 if (definition.type === 'string') {
253 return { value, consumeNext: inlineValue === undefined };
254 }
255 if (definition.type === 'enum') {
256 if (!definition.enumValues?.includes(value)) {
257 throw new AppError('INVALID_ARGS', `Invalid ${labelForFlag(token)}: ${value}`);
258 }
259 return { value, consumeNext: inlineValue === undefined };
260 }
261 const parsed = Number(value);
262 if (!Number.isFinite(parsed)) {
263 throw new AppError('INVALID_ARGS', `Invalid ${labelForFlag(token)}: ${value}`);
264 }

Callers 1

parseRawArgsFunction · 0.85

Calls 4

looksLikeFlagTokenFunction · 0.85
labelForFlagFunction · 0.85
isFiniteMethod · 0.80

Tested by

no test coverage detected