diff --git a/compatibility/tests/workflows.test.ts b/compatibility/tests/workflows.test.ts index e8faefe..4077cb7 100644 --- a/compatibility/tests/workflows.test.ts +++ b/compatibility/tests/workflows.test.ts @@ -101,3 +101,9 @@ it('marks zero-major package GitHub Releases as prereleases', () => { const script = readFileSync('scripts/create-package-release.mjs', 'utf8'); expect(script).toContain("version.startsWith('0.') || version.includes('-')"); }); + +it('release pagination uses gh-compatible JSON processing without mixing slurp and jq', () => { + const script = readFileSync('scripts/create-package-release.mjs', 'utf8'); + expect(script).toContain("'--slurp'"); + expect(script).not.toContain("'--jq'"); +}); diff --git a/scripts/create-package-release.mjs b/scripts/create-package-release.mjs index 198f27c..db24699 100644 --- a/scripts/create-package-release.mjs +++ b/scripts/create-package-release.mjs @@ -31,18 +31,10 @@ const tag = `${name}-v${version}`; const tags = run('git', ['ls-remote', '--tags', 'origin', `refs/tags/${tag}`]); if (tags.trim()) throw Error('Package tag already exists; inspect partial release state.'); const releases = JSON.parse( - run('gh', [ - 'api', - '--paginate', - '--slurp', - `repos/${process.env.GITHUB_REPOSITORY}/releases?per_page=100`, - '--jq', - '[.[][] | .tag_name]', - ]) - .trim() - .split('\n') - .join(''), -); + run('gh', ['api', '--paginate', '--slurp', `repos/${process.env.GITHUB_REPOSITORY}/releases?per_page=100`]), +) + .flat() + .map((release) => release.tag_name); if (releases.includes(tag)) throw Error('GitHub Release already exists.'); run(process.execPath, ['scripts/release-checks.mjs', sha]); const temp = mkdtempSync(join(tmpdir(), 'commercekit-release-'));