@@ -27,16 +27,14 @@ export const getReleaseTag = async (distribution: string, version: string): Prom
27
27
const body = await resp . readBody ( ) ;
28
28
const statusCode = resp . message . statusCode || 500 ;
29
29
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 } ` ) ;
33
31
}
34
32
const releases = < Array < GitHubRelease > > JSON . parse ( body ) ;
35
33
const res = releases . filter ( r => r . tag_name === tag ) . shift ( ) ;
36
34
if ( res ) {
37
35
return res ;
38
36
}
39
- throw new Error ( `Cannot find GoReleaser release ${ version } ${ suffix } in ${ url } ` ) ;
37
+ throw new Error ( `Cannot find GoReleaser release ${ version } in ${ url } ` ) ;
40
38
} ;
41
39
42
40
const resolveVersion = async ( distribution : string , version : string ) : Promise < string | null > => {
@@ -48,7 +46,16 @@ const resolveVersion = async (distribution: string, version: string): Promise<st
48
46
49
47
const cleanTags : Array < string > = allTags . map ( tag => cleanTag ( tag ) ) ;
50
48
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 ;
52
59
} ;
53
60
54
61
interface GitHubTag {
0 commit comments