Compare commits

..

8 Commits

Author SHA1 Message Date
Sascha Mann
6340c7ff94 Add production dependencies & build 2020-07-05 14:11:58 +02:00
Sascha Mann
415c8550da Bump version 2020-07-05 14:10:58 +02:00
Sascha Mann
85cbcd387e Fix error throwing
throw 'error' does not display an error message on GitHub Actions
anymore.
2020-07-05 14:10:57 +02:00
Sascha Mann
802776bd6a Throw error if version range doesn't match anything
fixes #38
2020-07-05 14:10:57 +02:00
Sascha Mann
477bec664c Fix mistakes in version range examples 2020-07-03 10:15:16 +02:00
Sascha Mann
c766abf0da Change ^1.3-0 -> ^1.3.0-0 in examples 2020-07-03 10:08:00 +02:00
Sascha Mann
3eb3524cb4 Fix divergence caused by not running npm i before build 2020-06-30 23:45:16 +02:00
Sascha Mann
6ac7df4cef Add Julia 1.5.0-rc1 2020-06-30 23:39:12 +02:00
7 changed files with 66 additions and 61 deletions

View File

@@ -40,9 +40,11 @@ You can either specify specific Julia versions or version ranges. If you specify
#### Examples #### Examples
- `1.2.0` is a valid semver version. The action will try to download exactly this version. If it's not available, the build step will fail. - `1.2.0` is a valid semver version. The action will try to download exactly this version. If it's not available, the build step will fail.
- `1.0` is a version range that will match the highest available Julia version that starts with `1.0`, e.g. `1.0.5`. - `1.0` is a version range that will match the highest available Julia version that starts with `1.0`, e.g. `1.0.5`, excluding pre-releases.
- `^1.3.0-rc1` is a caret version range that includes pre-releases starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 1.4.0`. - `^1.3.0-rc1` is a **caret** version range that includes pre-releases starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 2.0.0`.
- `^1.3-0` is a caret version range that includes _all_ pre-releases. It matches all versions `≥ 1.3.0-` and `< 1.4.0`. - `~1.3.0-rc1` is a **tilde** version range that includes pre-releases starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 1.4.0`.
- `^1.3.0-0` is a **caret** version range that includes _all_ pre-releases. It matches all versions `≥ 1.3.0-` and `< 2.0.0`.
- `~1.3.0-0` is a **tilde** version range that includes _all_ pre-releases. It matches all versions `≥ 1.3.0-` and `< 1.4.0`.
- `nightly` will install the latest nightly build. - `nightly` will install the latest nightly build.
Internally the action uses node's semver package to resolve version ranges. Its [documentation](https://github.com/npm/node-semver#advanced-range-syntax) contains more details on the version range syntax. You can test what version will be selected for a given input in this JavaScript [REPL](https://repl.it/@SaschaMann/setup-julia-version-logic). Internally the action uses node's semver package to resolve version ranges. Its [documentation](https://github.com/npm/node-semver#advanced-range-syntax) contains more details on the version range syntax. You can test what version will be selected for a given input in this JavaScript [REPL](https://repl.it/@SaschaMann/setup-julia-version-logic).

View File

@@ -29,6 +29,13 @@ describe('installer tests', () => {
expect(await installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.2.0') expect(await installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.2.0')
}) })
}) })
describe('invalid version range (#38)', () => {
it('Throws an error if a version range does not match any available version', () => {
expect(() => {
installer.getJuliaVersion(['v1.5.0-rc1', 'v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1'], '1.6')
}).toThrowError()
})
})
}) })
describe('node-semver behaviour', () => { describe('node-semver behaviour', () => {
describe('Windows installer change', () => { describe('Windows installer change', () => {

46
dist/index.js vendored
View File

@@ -3852,26 +3852,24 @@ const semver = __importStar(__webpack_require__(280));
const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS) const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS)
core.debug(`platform: ${osPlat}`); core.debug(`platform: ${osPlat}`);
// This is temporary until we have a better way of fetching releases (see #1, #4 for details) // This is temporary until we have a better way of fetching releases (see #1, #4 for details)
exports.juliaVersions = ['v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2']; exports.juliaVersions = ['v1.5.0-rc1', 'v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2'];
function getJuliaVersion(availableReleases, versionInput) { function getJuliaVersion(availableReleases, versionInput) {
return __awaiter(this, void 0, void 0, function* () { if (semver.valid(versionInput) == versionInput) {
if (semver.valid(versionInput) == versionInput) { // versionInput is a valid version, use it directly
// versionInput is a valid version, use it directly return versionInput;
return versionInput; }
} // nightlies
// nightlies if (versionInput == 'nightly') {
if (versionInput == 'nightly') { return 'nightly';
return 'nightly'; }
} // Use the highest available version that matches versionInput
// Use the highest available version that matches versionInput let version = semver.maxSatisfying(availableReleases, versionInput);
let version = semver.maxSatisfying(availableReleases, versionInput); if (version == null) {
if (version == null) { throw new Error(`Could not find a Julia version that matches ${versionInput}`);
throw `Could not find a Julia version that matches ${versionInput}`; }
} // GitHub tags start with v, remove it
// GitHub tags start with v, remove it version = version.replace(/^v/, '');
version = version.replace(/^v/, ''); return version;
return version;
});
} }
exports.getJuliaVersion = getJuliaVersion; exports.getJuliaVersion = getJuliaVersion;
function getMajorMinorVersion(version) { function getMajorMinorVersion(version) {
@@ -3884,7 +3882,7 @@ function getDownloadURL(version, arch) {
} }
else if (osPlat === 'darwin') { // macOS else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS'; throw new Error('32-bit Julia is not available on macOS');
} }
platform = 'mac'; platform = 'mac';
} }
@@ -3892,7 +3890,7 @@ function getDownloadURL(version, arch) {
platform = 'linux'; platform = 'linux';
} }
else { else {
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
// nightlies // nightlies
if (version == 'nightly') { if (version == 'nightly') {
@@ -3912,7 +3910,7 @@ function getFileName(version, arch) {
} }
else if (osPlat === 'darwin') { // macOS else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS'; throw new Error('32-bit Julia is not available on macOS');
} }
versionExt = '-mac64'; versionExt = '-mac64';
ext = 'dmg'; ext = 'dmg';
@@ -3927,7 +3925,7 @@ function getFileName(version, arch) {
ext = 'tar.gz'; ext = 'tar.gz';
} }
else { else {
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
return `julia-${version}${versionExt}.${ext}`; return `julia-${version}${versionExt}.${ext}`;
} }
@@ -3960,7 +3958,7 @@ function installJulia(version, arch) {
yield exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`]); yield exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`]);
return `${process.env.HOME}/julia`; return `${process.env.HOME}/julia`;
default: default:
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
}); });
} }

46
lib/installer.js generated
View File

@@ -25,26 +25,24 @@ const semver = __importStar(require("semver"));
const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS) const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS)
core.debug(`platform: ${osPlat}`); core.debug(`platform: ${osPlat}`);
// This is temporary until we have a better way of fetching releases (see #1, #4 for details) // This is temporary until we have a better way of fetching releases (see #1, #4 for details)
exports.juliaVersions = ['v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2']; exports.juliaVersions = ['v1.5.0-rc1', 'v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2'];
function getJuliaVersion(availableReleases, versionInput) { function getJuliaVersion(availableReleases, versionInput) {
return __awaiter(this, void 0, void 0, function* () { if (semver.valid(versionInput) == versionInput) {
if (semver.valid(versionInput) == versionInput) { // versionInput is a valid version, use it directly
// versionInput is a valid version, use it directly return versionInput;
return versionInput; }
} // nightlies
// nightlies if (versionInput == 'nightly') {
if (versionInput == 'nightly') { return 'nightly';
return 'nightly'; }
} // Use the highest available version that matches versionInput
// Use the highest available version that matches versionInput let version = semver.maxSatisfying(availableReleases, versionInput);
let version = semver.maxSatisfying(availableReleases, versionInput); if (version == null) {
if (version == null) { throw new Error(`Could not find a Julia version that matches ${versionInput}`);
throw `Could not find a Julia version that matches ${versionInput}`; }
} // GitHub tags start with v, remove it
// GitHub tags start with v, remove it version = version.replace(/^v/, '');
version = version.replace(/^v/, ''); return version;
return version;
});
} }
exports.getJuliaVersion = getJuliaVersion; exports.getJuliaVersion = getJuliaVersion;
function getMajorMinorVersion(version) { function getMajorMinorVersion(version) {
@@ -57,7 +55,7 @@ function getDownloadURL(version, arch) {
} }
else if (osPlat === 'darwin') { // macOS else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS'; throw new Error('32-bit Julia is not available on macOS');
} }
platform = 'mac'; platform = 'mac';
} }
@@ -65,7 +63,7 @@ function getDownloadURL(version, arch) {
platform = 'linux'; platform = 'linux';
} }
else { else {
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
// nightlies // nightlies
if (version == 'nightly') { if (version == 'nightly') {
@@ -85,7 +83,7 @@ function getFileName(version, arch) {
} }
else if (osPlat === 'darwin') { // macOS else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS'; throw new Error('32-bit Julia is not available on macOS');
} }
versionExt = '-mac64'; versionExt = '-mac64';
ext = 'dmg'; ext = 'dmg';
@@ -100,7 +98,7 @@ function getFileName(version, arch) {
ext = 'tar.gz'; ext = 'tar.gz';
} }
else { else {
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
return `julia-${version}${versionExt}.${ext}`; return `julia-${version}${versionExt}.${ext}`;
} }
@@ -133,7 +131,7 @@ function installJulia(version, arch) {
yield exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`]); yield exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`]);
return `${process.env.HOME}/julia`; return `${process.env.HOME}/julia`;
default: default:
throw `Platform ${osPlat} is not supported`; throw new Error(`Platform ${osPlat} is not supported`);
} }
}); });
} }

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "setup-julia", "name": "setup-julia",
"version": "1.1.7", "version": "1.1.9",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "setup-julia", "name": "setup-julia",
"version": "1.1.7", "version": "1.1.9",
"private": true, "private": true,
"description": "setup Julia action", "description": "setup Julia action",
"main": "lib/setup-julia.js", "main": "lib/setup-julia.js",

View File

@@ -12,9 +12,9 @@ const osPlat = os.platform() // possible values: win32 (Windows), linux (Linux),
core.debug(`platform: ${osPlat}`) core.debug(`platform: ${osPlat}`)
// This is temporary until we have a better way of fetching releases (see #1, #4 for details) // This is temporary until we have a better way of fetching releases (see #1, #4 for details)
export const juliaVersions = ['v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2'] export const juliaVersions = ['v1.5.0-rc1', 'v1.5.0-beta1', 'v1.4.2', 'v1.4.1', 'v1.4.0', 'v1.4.0-rc2', 'v1.4.0-rc1', 'v1.3.1', 'v1.3.0', 'v1.3.0-rc5', 'v1.3.0-rc4', 'v1.3.0-rc3', 'v1.3.0-rc2', 'v1.0.5', 'v1.2.0', 'v1.3.0-rc1', 'v1.2.0-rc3', 'v1.3.0-alpha', 'v1.2.0-rc2', 'v1.2.0-rc1', 'v1.1.1', 'v1.0.4', 'v1.1.0', 'v1.1.0-rc2', 'v1.1.0-rc1', 'v1.0.3', 'v1.0.2', 'v1.0.1', 'v1.0.0', 'v0.7.0', 'v1.0.0-rc1', 'v0.7.0-rc3', 'v0.7.0-rc2', 'v0.7.0-rc1', 'v0.7.0-beta2', 'v0.6.4', 'v0.7.0-beta', 'v0.7.0-alpha', 'v0.6.3', 'v0.6.2', 'v0.6.1', 'v0.6.0', 'v0.6.0-rc3', 'v0.6.0-rc2', 'v0.5.2', 'v0.6.0-rc1', 'v0.6.0-pre.beta', 'v0.5.1', 'v0.6.0-pre.alpha', 'v0.5.0', 'v0.4.7', 'v0.5.0-rc4', 'v0.5.0-rc3', 'v0.5.0-rc2', 'v0.5.0-rc1', 'v0.5.0-rc0', 'v0.4.6', 'v0.4.5', 'v0.4.4', 'v0.4.3', 'v0.4.2', 'v0.4.1', 'v0.3.12', 'v0.4.0', 'v0.4.0-rc4', 'v0.4.0-rc3', 'v0.4.0-rc2', 'v0.4.0-rc1', 'v0.3.11', 'v0.3.10', 'v0.3.9', 'v0.3.8', 'v0.3.7', 'v0.3.6', 'v0.3.5', 'v0.3.4', 'v0.3.3', 'v0.3.2', 'v0.3.1', 'v0.3.0', 'v0.3.0-rc4', 'v0.3.0-rc3', 'v0.3.0-rc2', 'v0.3.0-rc1', 'v0.2.0-rc1', 'v0.2.0-rc3', 'v0.2.0-rc4', 'v0.2.0', 'v0.2.0-rc2']
export async function getJuliaVersion(availableReleases: string[], versionInput: string): Promise<string> { export function getJuliaVersion(availableReleases: string[], versionInput: string): string {
if (semver.valid(versionInput) == versionInput) { if (semver.valid(versionInput) == versionInput) {
// versionInput is a valid version, use it directly // versionInput is a valid version, use it directly
return versionInput return versionInput
@@ -28,7 +28,7 @@ export async function getJuliaVersion(availableReleases: string[], versionInput:
// Use the highest available version that matches versionInput // Use the highest available version that matches versionInput
let version = semver.maxSatisfying(availableReleases, versionInput) let version = semver.maxSatisfying(availableReleases, versionInput)
if (version == null) { if (version == null) {
throw `Could not find a Julia version that matches ${versionInput}` throw new Error(`Could not find a Julia version that matches ${versionInput}`)
} }
// GitHub tags start with v, remove it // GitHub tags start with v, remove it
@@ -48,13 +48,13 @@ function getDownloadURL(version: string, arch: string): string {
platform = 'winnt' platform = 'winnt'
} else if (osPlat === 'darwin') { // macOS } else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS' throw new Error('32-bit Julia is not available on macOS')
} }
platform = 'mac' platform = 'mac'
} else if (osPlat === 'linux') { // Linux } else if (osPlat === 'linux') { // Linux
platform = 'linux' platform = 'linux'
} else { } else {
throw `Platform ${osPlat} is not supported` throw new Error(`Platform ${osPlat} is not supported`)
} }
// nightlies // nightlies
@@ -78,7 +78,7 @@ function getFileName(version: string, arch: string): string {
ext = 'exe' ext = 'exe'
} else if (osPlat === 'darwin') { // macOS } else if (osPlat === 'darwin') { // macOS
if (arch == 'x86') { if (arch == 'x86') {
throw '32-bit Julia is not available on macOS' throw new Error('32-bit Julia is not available on macOS')
} }
versionExt = '-mac64' versionExt = '-mac64'
ext = 'dmg' ext = 'dmg'
@@ -90,7 +90,7 @@ function getFileName(version: string, arch: string): string {
} }
ext = 'tar.gz' ext = 'tar.gz'
} else { } else {
throw `Platform ${osPlat} is not supported` throw new Error(`Platform ${osPlat} is not supported`)
} }
return `julia-${version}${versionExt}.${ext}` return `julia-${version}${versionExt}.${ext}`
@@ -124,6 +124,6 @@ export async function installJulia(version: string, arch: string): Promise<strin
await exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`]) await exec.exec('/bin/bash', ['-c', `cp -a /Volumes/Julia-*/Julia-*.app/Contents/Resources/julia ${process.env.HOME}`])
return `${process.env.HOME}/julia` return `${process.env.HOME}/julia`
default: default:
throw `Platform ${osPlat} is not supported` throw new Error(`Platform ${osPlat} is not supported`)
} }
} }