52 lines
2.2 KiB
JavaScript
52 lines
2.2 KiB
JavaScript
import { ensureIsTruthyString } from './utils';
|
|
const BASE_URL = 'https://github.com/electron/electron/releases/download/';
|
|
const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
|
|
export function getArtifactFileName(details) {
|
|
ensureIsTruthyString(details, 'artifactName');
|
|
if (details.isGeneric) {
|
|
return details.artifactName;
|
|
}
|
|
ensureIsTruthyString(details, 'arch');
|
|
ensureIsTruthyString(details, 'platform');
|
|
ensureIsTruthyString(details, 'version');
|
|
return `${[
|
|
details.artifactName,
|
|
details.version,
|
|
details.platform,
|
|
details.arch,
|
|
...(details.artifactSuffix ? [details.artifactSuffix] : []),
|
|
].join('-')}.zip`;
|
|
}
|
|
function mirrorVar(name, options, defaultValue) {
|
|
// Convert camelCase to camel_case for env var reading
|
|
const lowerName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
|
|
return (process.env[`NPM_CONFIG_ELECTRON_${lowerName.toUpperCase()}`] ||
|
|
process.env[`npm_config_electron_${lowerName}`] ||
|
|
process.env[`npm_package_config_electron_${lowerName}`] ||
|
|
process.env[`ELECTRON_${lowerName.toUpperCase()}`] ||
|
|
options[name] ||
|
|
defaultValue);
|
|
}
|
|
export async function getArtifactRemoteURL(details) {
|
|
const opts = details.mirrorOptions || {};
|
|
let base = mirrorVar('mirror', opts, BASE_URL);
|
|
if (details.version.includes('nightly')) {
|
|
const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
|
|
if (nightlyDeprecated) {
|
|
base = nightlyDeprecated;
|
|
console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
|
|
}
|
|
else {
|
|
base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
|
|
}
|
|
}
|
|
const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
|
|
const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
|
|
// Allow customized download URL resolution.
|
|
if (opts.resolveAssetURL) {
|
|
const url = await opts.resolveAssetURL(details);
|
|
return url;
|
|
}
|
|
return `${base}${path}/${file}`;
|
|
}
|
|
//# sourceMappingURL=artifact-utils.js.map
|