Skip to content

Commit 398921e

Browse files
SAAS-7564 - fix downloading venona release with no assets (#507)
1 parent adb242a commit 398921e

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

lib/binary/downloader.js

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,28 @@ function _ensureDirectory(location) {
2828
}
2929

3030
async 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

4355
function _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

Comments
 (0)