mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 11:01:21 +08:00
chore(core): monorepo, esm targeting, improved management (#8707)
This commit is contained in:
128
packages/webpack/snapshot/android/utils.js
Normal file
128
packages/webpack/snapshot/android/utils.js
Normal file
@ -0,0 +1,128 @@
|
||||
const { chmodSync, createWriteStream } = require("fs");
|
||||
const { tmpdir, EOL } = require("os");
|
||||
const { join, relative, isAbsolute } = require("path");
|
||||
const os = require("os");
|
||||
|
||||
const { mkdir } = require("shelljs");
|
||||
// const { get } = require("request");
|
||||
const { getProxySettings } = require("proxy-lib");
|
||||
const semver = require("semver");
|
||||
|
||||
const CONSTANTS = {
|
||||
SNAPSHOT_TMP_DIR: join(tmpdir(), "snapshot-tools"),
|
||||
MAC_OS_NAME: "darwin",
|
||||
WIN_OS_NAME: "win",
|
||||
LINUX_OS_NAME: "linux"
|
||||
};
|
||||
|
||||
const createDirectory = dir => mkdir('-p', dir);
|
||||
|
||||
function getHostOS() {
|
||||
const hostOS = os.type().toLowerCase();
|
||||
if (hostOS.startsWith(CONSTANTS.MAC_OS_NAME))
|
||||
return CONSTANTS.MAC_OS_NAME;
|
||||
if (hostOS.startsWith(CONSTANTS.LINUX_OS_NAME))
|
||||
return CONSTANTS.LINUX_OS_NAME;
|
||||
if (hostOS.startsWith(CONSTANTS.WIN_OS_NAME))
|
||||
return CONSTANTS.WIN_OS_NAME;
|
||||
return hostOS;
|
||||
}
|
||||
|
||||
function getHostOSVersion() {
|
||||
return os.release();
|
||||
}
|
||||
|
||||
function getHostOSArch() {
|
||||
return os.arch();
|
||||
}
|
||||
|
||||
function has32BitArch(targetArchs) {
|
||||
return (Array.isArray(targetArchs) && targetArchs.some(arch => arch === "arm" || arch === "ia32")) ||
|
||||
(targetArchs === "arm" || targetArchs === "ia32");
|
||||
}
|
||||
|
||||
function isSubPath(parentPath, childPath) {
|
||||
const relativePath = relative(parentPath, childPath);
|
||||
|
||||
return relativePath === "" ||
|
||||
(relativePath && !relativePath.startsWith('..') && !isAbsolute(relativePath));
|
||||
}
|
||||
|
||||
function isMacOSCatalinaOrHigher() {
|
||||
let isCatalinaOrHigher = false;
|
||||
const catalinaVersion = "19.0.0";
|
||||
const hostOS = getHostOS();
|
||||
if (hostOS === CONSTANTS.MAC_OS_NAME) {
|
||||
const hostOSVersion = getHostOSVersion();
|
||||
isCatalinaOrHigher = semver.gte(hostOSVersion, catalinaVersion);
|
||||
}
|
||||
|
||||
return isCatalinaOrHigher;
|
||||
}
|
||||
|
||||
function isWindows() {
|
||||
return getHostOS() === CONSTANTS.WIN_OS_NAME;
|
||||
}
|
||||
|
||||
const downloadFile = (url, destinationFilePath, timeout) =>
|
||||
new Promise((resolve, reject) => {
|
||||
// getRequestOptions(url, timeout)
|
||||
// .then(options =>
|
||||
// get(options)
|
||||
// .on("error", reject)
|
||||
// .pipe(createWriteStream(destinationFilePath, { autoClose: true }))
|
||||
// .on("finish", _ => {
|
||||
// chmodSync(destinationFilePath, 0755);
|
||||
// return resolve(destinationFilePath);
|
||||
// })
|
||||
// ).catch(reject);
|
||||
});
|
||||
|
||||
const getJsonFile = url =>
|
||||
new Promise((resolve, reject) => {
|
||||
// getRequestOptions(url)
|
||||
// .then(options =>
|
||||
// get(options, (error, response, body) => {
|
||||
// if (error) {
|
||||
// return reject(error);
|
||||
// }
|
||||
|
||||
// if (!response || response.statusCode !== 200) {
|
||||
// return reject(`Couldn't fetch ${url}! Response:${EOL}${response}`);
|
||||
// }
|
||||
|
||||
// try {
|
||||
// const data = JSON.parse(body);
|
||||
// resolve(data);
|
||||
// } catch (error) {
|
||||
// reject(`Couldn't parse json data! Original error:${EOL}${error}`);
|
||||
// }
|
||||
// })
|
||||
// ).catch(reject);
|
||||
});
|
||||
|
||||
const getRequestOptions = (url, timeout) =>
|
||||
new Promise((resolve, reject) => {
|
||||
const options = { url, timeout };
|
||||
getProxySettings()
|
||||
.then(proxySettings => {
|
||||
const allOptions = Object.assign(options, proxySettings);
|
||||
resolve(allOptions);
|
||||
})
|
||||
.catch(error =>
|
||||
reject(`Couldn't get proxy settings! Original error:${EOL}${error}`));
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
CONSTANTS,
|
||||
createDirectory,
|
||||
has32BitArch,
|
||||
getHostOS,
|
||||
getHostOSVersion,
|
||||
getHostOSArch,
|
||||
isMacOSCatalinaOrHigher,
|
||||
downloadFile,
|
||||
getJsonFile,
|
||||
isSubPath,
|
||||
isWindows
|
||||
};
|
Reference in New Issue
Block a user