import type { Command } from "commander"; import { buildParseArgv } from "../argv.js"; import { resolveActionArgs, resolveCommandOptionArgs } from "./helpers.js"; function buildFallbackArgv(program: Command, actionCommand: Command | undefined): string[] { const actionArgsList = resolveActionArgs(actionCommand); const parentOptionArgs = actionCommand?.parent === program ? resolveCommandOptionArgs(program) : []; return actionCommand?.name() ? [...parentOptionArgs, actionCommand.name(), ...actionArgsList] : [...parentOptionArgs, ...actionArgsList]; } export async function reparseProgramFromActionArgs( program: Command, actionArgs: unknown[], ): Promise { const actionCommand = actionArgs.at(-1) as Command | undefined; const root = actionCommand?.parent ?? program; const rawArgs = (root as Command & { rawArgs?: string[] }).rawArgs; const fallbackArgv = buildFallbackArgv(program, actionCommand); const parseArgv = buildParseArgv({ programName: program.name(), rawArgs, fallbackArgv, }); await program.parseAsync(parseArgv); }