ALLOW platform specific url patterns

This commit is contained in:
David Recuenco
2020-02-05 12:26:09 +01:00
parent 71ac4c1b0a
commit 9274e3da16
3 changed files with 86 additions and 2 deletions

View File

@@ -70,6 +70,32 @@ function validateConfiguration({ version, goBinary }) {
}
}
function getUrl(url, process) {
if (typeof url === 'string') {
return url;
}
let _url;
if (url[process.platform]) {
_url = url[process.platform];
} else {
_url = url.default;
}
if (typeof _url === 'string') {
return _url;
}
if (_url[process.arch]) {
_url = _url[process.arch]
} else {
_url = _url.default;
}
return _url;
}
function parsePackageJson() {
if (!(process.arch in ARCH_MAPPING)) {
console.error('Installation is not supported for this architecture: ' + process.arch);
@@ -99,9 +125,14 @@ function parsePackageJson() {
// We have validated the config. It exists in all its glory
const binPath = packageJson.goBinary.path;
let binName = packageJson.goBinary.name;
let url = packageJson.goBinary.url;
let url = getUrl(packageJson.goBinary.url, process);
let version = packageJson.version;
if (!url) {
console.error('Could not find url matching platform and architecture');
return
}
if (version[0] === 'v') version = version.substr(1); // strip the 'v' if necessary v0.0.1 => 0.0.1
// Binary name on Windows has .exe suffix
@@ -127,4 +158,4 @@ function parsePackageJson() {
};
}
module.exports = { parsePackageJson, getInstallationPath };
module.exports = { parsePackageJson, getUrl, getInstallationPath };