@@ -28,16 +28,28 @@ function _ensureDirectory(location) {
2828}
2929
3030async function _getRemoteVersion ( {
31- name, branch , path , file ,
31+ name, osType ,
3232} ) {
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 ,
3737 method : 'GET' ,
3838 headers : { 'User-Agent' : 'codefresh' } ,
3939 } ) ;
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 : '' } ;
4153}
4254
4355function _buildDownloadURL ( { name, version, binary } ) {
@@ -106,25 +118,18 @@ class Downloader {
106118
107119 let localVersion = _getLocalVersion ( join ( dir , component . local . versionFile ) ) ;
108120 const {
109- repo : name , branch , versionPath : path , versionFile : file ,
121+ repo : name ,
110122 } = component . remote ;
111- let remoteVersion = await _getRemoteVersion ( {
112- name, branch, path, file,
113- } ) ;
123+ let { remoteVersion, download_url } = await _getRemoteVersion ( { name, osType } ) ;
114124 remoteVersion = remoteVersion . trim ( ) ;
115125 localVersion = localVersion . trim ( ) ;
116126
117127 if ( compareVersions ( localVersion , remoteVersion ) >= 0 ) {
118- // logger.debug(`Download is not required latest-version=${remoteVersion} local-version=${localVersion}`);
119128 return Promise . resolve ( ) ;
120129 }
121- logger . debug ( `${ component . name } component upgrade is required, downloading.` ) ;
122-
130+ logger . debug ( `${ component . name } component upgrade is required, downloading latest version [${ remoteVersion } ]` ) ;
123131
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 ) ;
128133
129134 if ( this . progress ) {
130135 let size = 0 ;
0 commit comments