fix: do not get releases.json if version is specific (#502)

closes #489
This commit is contained in:
Carlos Alexandro Becker 2025-08-02 05:24:12 -03:00 committed by GitHub
parent a386515f0c
commit 9a6cd01b33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 2 deletions

View file

@ -86,6 +86,18 @@ describe('getRelease', () => {
expect(release?.tag_name).toEqual('v2.7.0');
});
it('skips JSON check for specific version v2.8.1', async () => {
const release = await github.getRelease('goreleaser', 'v2.8.1');
expect(release).not.toBeNull();
expect(release?.tag_name).toEqual('v2.8.1');
});
it('skips JSON check for specific version without v prefix', async () => {
const release = await github.getRelease('goreleaser', '2.8.1');
expect(release).not.toBeNull();
expect(release?.tag_name).toEqual('v2.8.1');
});
it('unknown GoReleaser Pro release', async () => {
await expect(github.getRelease('goreleaser-pro', 'foo')).rejects.toThrow(
new Error('Cannot find GoReleaser release foo in https://goreleaser.com/static/releases-pro.json')

2
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View file

@ -19,6 +19,21 @@ export const getReleaseTag = async (distribution: string, version: string): Prom
if (version === 'nightly') {
return {tag_name: version};
}
// If version is a specific version (not a range), skip the JSON check
const cleanVersion: string = cleanTag(version);
if (semver.valid(cleanVersion)) {
let tag = version.startsWith('v') ? version : `v${version}`;
// Handle GoReleaser Pro suffix for versions < 2.7.0, but only if not already present
// TODO: remove all this `-pro` thing at some point.
if (goreleaser.isPro(distribution) && semver.lt(cleanVersion, '2.7.0') && !tag.endsWith('-pro')) {
tag = tag + goreleaser.distribSuffix(distribution);
}
return {tag_name: tag};
}
const tag: string = (await resolveVersion(distribution, version)) || version;
const suffix: string = goreleaser.distribSuffix(distribution);
const url = `https://goreleaser.com/static/releases${suffix}.json`;