in packages/autocomplete-parser/src/parseArguments.ts [893:948]
optionArgState: createArgState(),
passedOptions: [],
subcommandArgState: createArgState(loadSpecResult.args),
haveEnteredSubcommandArgs: false,
};
}
return false;
};
if (await updateStateForLoadSpec(state.completionObj.loadSpec, 0)) {
return state;
}
for (let i = 1; i < tokens.length; i += 1) {
if (state.completionObj.generateSpec) {
state = await generateSpecForState(
state,
tokens.map((token) => token.text),
isParsingHistory,
localLogger,
);
generatedSpec = true;
}
if (i === tokens.length - 1) {
// Don't update state for last token.
break;
}
const token = tokens[i].text;
const lastArgObject = getCurrentArg(getArgState(state));
const lastArgType = preferOptionArg(state)
? TokenType.OptionArg
: TokenType.SubcommandArg;
const lastState = state;
state = updateState(state, token);
localLogger.debug("Parser state update", { state });
const { annotations } = state;
const lastAnnotation = annotations[annotations.length - 1];
const lastType =
lastAnnotation.type === TokenType.Composite
? lastAnnotation.subtokens[lastAnnotation.subtokens.length - 1].type
: lastAnnotation.type;
if (
lastType === lastArgType &&
lastArgObject?.parserDirectives?.alias &&
!substitutedAliases.has(token)
) {
const { alias } = lastArgObject.parserDirectives;
try {