83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const childProcess = require("child_process");
|
||
|
const fs = require("fs-extra");
|
||
|
const os = require("os");
|
||
|
const path = require("path");
|
||
|
async function useAndRemoveDirectory(directory, fn) {
|
||
|
let result;
|
||
|
try {
|
||
|
result = await fn(directory);
|
||
|
}
|
||
|
finally {
|
||
|
await fs.remove(directory);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
async function withTempDirectoryIn(parentDirectory = os.tmpdir(), fn) {
|
||
|
const tempDirectoryPrefix = 'electron-download-';
|
||
|
const tempDirectory = await fs.mkdtemp(path.resolve(parentDirectory, tempDirectoryPrefix));
|
||
|
return useAndRemoveDirectory(tempDirectory, fn);
|
||
|
}
|
||
|
exports.withTempDirectoryIn = withTempDirectoryIn;
|
||
|
async function withTempDirectory(fn) {
|
||
|
return withTempDirectoryIn(undefined, fn);
|
||
|
}
|
||
|
exports.withTempDirectory = withTempDirectory;
|
||
|
function normalizeVersion(version) {
|
||
|
if (!version.startsWith('v')) {
|
||
|
return `v${version}`;
|
||
|
}
|
||
|
return version;
|
||
|
}
|
||
|
exports.normalizeVersion = normalizeVersion;
|
||
|
/**
|
||
|
* Runs the `uname` command and returns the trimmed output.
|
||
|
*/
|
||
|
function uname() {
|
||
|
return childProcess
|
||
|
.execSync('uname -m')
|
||
|
.toString()
|
||
|
.trim();
|
||
|
}
|
||
|
exports.uname = uname;
|
||
|
/**
|
||
|
* Generates an architecture name that would be used in an Electron or Node.js
|
||
|
* download file name.
|
||
|
*/
|
||
|
function getNodeArch(arch) {
|
||
|
if (arch === 'arm') {
|
||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
|
switch (process.config.variables.arm_version) {
|
||
|
case '6':
|
||
|
return uname();
|
||
|
case '7':
|
||
|
default:
|
||
|
return 'armv7l';
|
||
|
}
|
||
|
}
|
||
|
return arch;
|
||
|
}
|
||
|
exports.getNodeArch = getNodeArch;
|
||
|
/**
|
||
|
* Generates an architecture name that would be used in an Electron or Node.js
|
||
|
* download file name, from the `process` module information.
|
||
|
*/
|
||
|
function getHostArch() {
|
||
|
return getNodeArch(process.arch);
|
||
|
}
|
||
|
exports.getHostArch = getHostArch;
|
||
|
function ensureIsTruthyString(obj, key) {
|
||
|
if (!obj[key] || typeof obj[key] !== 'string') {
|
||
|
throw new Error(`Expected property "${key}" to be provided as a string but it was not`);
|
||
|
}
|
||
|
}
|
||
|
exports.ensureIsTruthyString = ensureIsTruthyString;
|
||
|
function isOfficialLinuxIA32Download(platform, arch, version, mirrorOptions) {
|
||
|
return (platform === 'linux' &&
|
||
|
arch === 'ia32' &&
|
||
|
Number(version.slice(1).split('.')[0]) >= 4 &&
|
||
|
typeof mirrorOptions === 'undefined');
|
||
|
}
|
||
|
exports.isOfficialLinuxIA32Download = isOfficialLinuxIA32Download;
|
||
|
//# sourceMappingURL=utils.js.map
|