| 11 | * @returns The value if found, undefined otherwise |
| 12 | */ |
| 13 | export function eagerParseCliFlag( |
| 14 | flagName: string, |
| 15 | argv: string[] = process.argv, |
| 16 | ): string | undefined { |
| 17 | for (let i = 0; i < argv.length; i++) { |
| 18 | const arg = argv[i] |
| 19 | // Handle --flag=value syntax |
| 20 | if (arg?.startsWith(`${flagName}=`)) { |
| 21 | return arg.slice(flagName.length + 1) |
| 22 | } |
| 23 | // Handle --flag value syntax |
| 24 | if (arg === flagName && i + 1 < argv.length) { |
| 25 | return argv[i + 1] |
| 26 | } |
| 27 | } |
| 28 | return undefined |
| 29 | } |
| 30 | |
| 31 | /** |
| 32 | * Handle the standard Unix `--` separator convention in CLI arguments. |