fix(cli): preserve equals in root option values

This commit is contained in:
Thiago Costa
2026-05-19 01:57:14 -03:00
committed by clawsweeper
parent d7083bab4c
commit a4bef79bfe
2 changed files with 30 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
import { describe, expect, it } from "vitest";
import { takeCliRootOptionValue } from "./root-option-value.js";
describe("takeCliRootOptionValue", () => {
it("preserves equals signs after the first separator", () => {
expect(takeCliRootOptionValue("--token=abc=def", undefined)).toEqual({
value: "abc=def",
consumedNext: false,
});
expect(takeCliRootOptionValue("--token=abc==", undefined)).toEqual({
value: "abc==",
consumedNext: false,
});
});
it("treats empty inline values as missing", () => {
expect(takeCliRootOptionValue("--token=", "fallback")).toEqual({
value: null,
consumedNext: false,
});
});
it("continues to consume the next token for space-separated values", () => {
expect(takeCliRootOptionValue("--token", "abc=def")).toEqual({
value: "abc=def",
consumedNext: true,
});
});
});

View File

@@ -8,7 +8,7 @@ export function takeCliRootOptionValue(
consumedNext: boolean;
} {
if (raw.includes("=")) {
const [, value] = raw.split("=", 2);
const value = raw.slice(raw.indexOf("=") + 1);
const trimmed = (value ?? "").trim();
return { value: trimmed || null, consumedNext: false };
}