@@ -27,16 +27,14 @@ export const getReleaseTag = async (distribution: string, version: string): Prom
2727 const body = await resp . readBody ( ) ;
2828 const statusCode = resp . message . statusCode || 500 ;
2929 if ( statusCode >= 400 ) {
30- throw new Error (
31- `Failed to get GoReleaser release ${ version } ${ suffix } from ${ url } with status code ${ statusCode } : ${ body } `
32- ) ;
30+ throw new Error ( `Failed to get GoReleaser release ${ version } from ${ url } with status code ${ statusCode } : ${ body } ` ) ;
3331 }
3432 const releases = < Array < GitHubRelease > > JSON . parse ( body ) ;
3533 const res = releases . filter ( r => r . tag_name === tag ) . shift ( ) ;
3634 if ( res ) {
3735 return res ;
3836 }
39- throw new Error ( `Cannot find GoReleaser release ${ version } ${ suffix } in ${ url } ` ) ;
37+ throw new Error ( `Cannot find GoReleaser release ${ version } in ${ url } ` ) ;
4038} ;
4139
4240const resolveVersion = async ( distribution : string , version : string ) : Promise < string | null > => {
@@ -48,7 +46,16 @@ const resolveVersion = async (distribution: string, version: string): Promise<st
4846
4947 const cleanTags : Array < string > = allTags . map ( tag => cleanTag ( tag ) ) ;
5048 const cleanVersion : string = cleanTag ( version ) ;
51- return semver . maxSatisfying ( cleanTags , cleanVersion ) + goreleaser . distribSuffix ( distribution ) ;
49+ if ( ! semver . valid ( cleanVersion ) && ! semver . validRange ( cleanVersion ) ) {
50+ // if the given version is invalid, return whatever we got.
51+ return version ;
52+ }
53+ const v = semver . maxSatisfying ( cleanTags , cleanVersion ) ;
54+ if ( semver . lt ( v , '2.7.0' ) ) {
55+ // if its a version older than 2.7.0, append the suffix.
56+ return v + goreleaser . distribSuffix ( distribution ) ;
57+ }
58+ return v ;
5259} ;
5360
5461interface GitHubTag {
0 commit comments