Skip to content

Commit 5018cd7

Browse files
committed
refactor: fix broken parsing of quoted values
1 parent 9a25dec commit 5018cd7

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

scripts/merge-mac-update-manifests.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,25 @@ releaseDate: '2026-03-07T10:36:07.540Z'
8484

8585
assert.throws(() => mergeMacUpdateManifests(arm64, x64), /different versions/);
8686
});
87+
88+
it("preserves quoted scalars as strings", () => {
89+
const manifest = parseMacUpdateManifest(
90+
`version: '1.0'
91+
files:
92+
- url: T3-Code-1.0-x64.zip
93+
sha512: zipsha
94+
size: 1
95+
releaseName: 'true'
96+
minimumSystemVersion: '13.0'
97+
stagingPercentage: 50
98+
releaseDate: '2026-03-07T10:36:07.540Z'
99+
`,
100+
"latest-mac.yml",
101+
);
102+
103+
assert.equal(manifest.version, "1.0");
104+
assert.equal(manifest.extras.releaseName, "true");
105+
assert.equal(manifest.extras.minimumSystemVersion, "13.0");
106+
assert.equal(manifest.extras.stagingPercentage, 50);
107+
});
87108
});

scripts/merge-mac-update-manifests.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ function parseFileRecord(
5555
}
5656

5757
function parseScalarValue(rawValue: string): MacUpdateScalar {
58-
const value = stripSingleQuotes(rawValue.trim());
58+
const trimmed = rawValue.trim();
59+
const isQuoted = trimmed.startsWith("'") && trimmed.endsWith("'") && trimmed.length >= 2;
60+
const value = isQuoted ? trimmed.slice(1, -1).replace(/''/g, "'") : trimmed;
61+
if (isQuoted) return value;
5962
if (value === "true") return true;
6063
if (value === "false") return false;
6164
if (/^-?\d+(?:\.\d+)?$/.test(value)) {

0 commit comments

Comments
 (0)