@@ -28,16 +28,28 @@ function _ensureDirectory(location) {
28
28
}
29
29
30
30
async function _getRemoteVersion ( {
31
- name, branch , path , file ,
31
+ name, osType ,
32
32
} ) {
33
- const final = branch ? ` ${ name } / ${ branch } / ${ path } ` : ` ${ name } / ${ path } ` ;
34
- const url = `https://raw.githubusercontent .com/codefresh-io/${ final } / ${ file } ` ;
35
- const req = await rp ( {
36
- url ,
33
+ // get the 10 latest releases
34
+ const releasesUrl = `https://api.github .com/repos/ codefresh-io/${ name } /releases?per_page=10 ` ;
35
+ const res = await rp ( {
36
+ uri : releasesUrl ,
37
37
method : 'GET' ,
38
38
headers : { 'User-Agent' : 'codefresh' } ,
39
39
} ) ;
40
- return req ;
40
+
41
+ const releases = JSON . parse ( res ) ;
42
+ for ( let i = 0 ; i < releases . length ; i += 1 ) {
43
+ const curRelease = releases [ i ] ;
44
+ const neededAsset = ( curRelease . assets || [ ] ) . find ( asset => {
45
+ const assetName = asset . name || '' ;
46
+ return assetName . startsWith ( `${ name } _` ) && assetName . endsWith ( osType ) ;
47
+ } ) ;
48
+ if ( neededAsset ) {
49
+ return { remoteVersion : curRelease . name , download_url : neededAsset . browser_download_url } ;
50
+ }
51
+ }
52
+ return { remoteVersion : '0' , download_url : '' } ;
41
53
}
42
54
43
55
function _buildDownloadURL ( { name, version, binary } ) {
@@ -106,25 +118,18 @@ class Downloader {
106
118
107
119
let localVersion = _getLocalVersion ( join ( dir , component . local . versionFile ) ) ;
108
120
const {
109
- repo : name , branch , versionPath : path , versionFile : file ,
121
+ repo : name ,
110
122
} = component . remote ;
111
- let remoteVersion = await _getRemoteVersion ( {
112
- name, branch, path, file,
113
- } ) ;
123
+ let { remoteVersion, download_url } = await _getRemoteVersion ( { name, osType } ) ;
114
124
remoteVersion = remoteVersion . trim ( ) ;
115
125
localVersion = localVersion . trim ( ) ;
116
126
117
127
if ( compareVersions ( localVersion , remoteVersion ) >= 0 ) {
118
- // logger.debug(`Download is not required latest-version=${remoteVersion} local-version=${localVersion}`);
119
128
return Promise . resolve ( ) ;
120
129
}
121
- logger . debug ( `${ component . name } component upgrade is required, downloading.` ) ;
122
-
130
+ logger . debug ( `${ component . name } component upgrade is required, downloading latest version [${ remoteVersion } ]` ) ;
123
131
124
- const binary = `${ name } _${ remoteVersion } _${ osType } ` ;
125
- const version = component . version . prefix ? `${ component . version . prefix } ${ remoteVersion } ` : remoteVersion ;
126
- const url = _buildDownloadURL ( { name, version, binary } ) ;
127
- const resp = await request ( url ) ;
132
+ const resp = await request ( download_url ) ;
128
133
129
134
if ( this . progress ) {
130
135
let size = 0 ;
0 commit comments