CLI: resolve parent/subcommand option collisions (#18725)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: b7e51cf90950cdd3049ac3c7a3a949717b8ba261
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
Gustavo Madeira Santana
2026-02-17 20:57:09 -05:00
committed by GitHub
parent fa4f66255c
commit 985ec71c55
17 changed files with 856 additions and 38 deletions

View File

@@ -102,14 +102,21 @@ export function registerBrowserStateCommands(
set
.command("headers")
.description("Set extra HTTP headers (JSON object)")
.requiredOption("--json <json>", "JSON object of headers")
.argument("[headersJson]", "JSON object of headers (alternative to --headers-json)")
.option("--headers-json <json>", "JSON object of headers")
.option("--target-id <id>", "CDP target id (or unique prefix)")
.action(async (opts, cmd) => {
.action(async (headersJson: string | undefined, opts, cmd) => {
const parent = parentOpts(cmd);
await runBrowserCommand(async () => {
const parsed = JSON.parse(String(opts.json)) as unknown;
const headersJsonValue =
(typeof opts.headersJson === "string" && opts.headersJson.trim()) ||
(headersJson?.trim() ? headersJson.trim() : undefined);
if (!headersJsonValue) {
throw new Error("Missing headers JSON (pass --headers-json or positional JSON argument)");
}
const parsed = JSON.parse(String(headersJsonValue)) as unknown;
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
throw new Error("headers json must be an object");
throw new Error("Headers JSON must be a JSON object");
}
const headers: Record<string, string> = {};
for (const [k, v] of Object.entries(parsed as Record<string, unknown>)) {