Skip to content

Commit 1a57967

Browse files
authored
fix graaljs download url after tag name change (#51)
1 parent 0cc505a commit 1a57967

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/engines/graaljs.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
const fetch = require('node-fetch');
4+
const { inspect } = require('util');
45
const assert = require('assert');
56
const execa = require('execa');
67
const Installer = require('../installer');
@@ -72,9 +73,9 @@ class GraalJSInstaller extends Installer {
7273

7374
static async resolveVersion(version) {
7475
if (version === 'latest') {
75-
const body = await fetch('https://api.github.com/repos/oracle/graaljs/releases')
76+
const releases = await fetch('https://api.github.com/repos/oracle/graaljs/releases')
7677
.then((r) => r.json());
77-
const versions = body
78+
const versions = releases
7879
.filter((b) => !b.prerelease)
7980
.map((b) => GraalJSVersion.from(b.tag_name))
8081
.sort((a, b) => GraalJSVersion.compare(b, a));
@@ -87,7 +88,22 @@ class GraalJSInstaller extends Installer {
8788
}
8889

8990
async getDownloadURL(version) {
90-
return `https://github.com/oracle/graaljs/releases/download/vm-${version}/graaljs-${version}-${getFilename()}${getArchiveExtension()}`;
91+
const assetName = `graaljs-${version}-${getFilename()}${getArchiveExtension()}`;
92+
const releases = await fetch('https://api.github.com/repos/oracle/graaljs/releases')
93+
.then((r) => r.json());
94+
for (const release of releases) {
95+
// tag_name may be graal-${version} or vm-${version}
96+
if (GraalJSVersion.compare(release.tag_name, version) === 0) {
97+
for (const asset of release.assets) {
98+
if (asset.name === assetName) {
99+
// https://github.com/oracle/graaljs/releases/download/${release.tag_name}/${asset.name}
100+
return asset.browser_download_url;
101+
}
102+
}
103+
throw new Error(`Could not find asset '${assetName}' in release '${release.tag_name}'\nAvailable assets: ${inspect(release.assets.map((a) => a.name).filter((name) => name.endsWith(getArchiveExtension())))}`);
104+
}
105+
}
106+
throw new Error(`Could not find release version '${version}'`);
91107
}
92108

93109
async extract() {

0 commit comments

Comments
 (0)