which-electron/index.js

86 lines
2.4 KiB
JavaScript
Raw Normal View History

2021-07-15 15:26:36 +00:00
const path = require("path");
const osguess = require("./os");
const finder = require("./finder");
2021-07-15 16:06:12 +00:00
const zip = require("./zip");
const fp = require("./fingerprint");
const cleanup = require("rimraf");
const V = require("./version");
2021-07-15 15:26:36 +00:00
2021-07-15 16:06:12 +00:00
// Input file comes from process.argv[2]
2021-07-15 15:26:36 +00:00
const FILENAME = process.argv[2];
console.log(FILENAME);
2021-07-15 21:03:09 +00:00
function logSupport(version) {
if (V.isSupported(version)) {
console.log(`${version} is currently supported`);
} else {
console.log(`${version} is currently not supported`);
}
}
zip.listFileContents(FILENAME, (entries) => {
let osguess1 = osguess.guessFromFilename(FILENAME);
let osguess2 = osguess.guessFromContents(entries);
2021-07-16 15:26:43 +00:00
if (osguess1 !== osguess2 && osguess1 && osguess2) {
console.log(`Unsure about operating system. Going with ${osguess2}. Other option was ${osguess1}`);
}
2021-07-16 15:26:43 +00:00
if (osguess1 && !osguess2) {
osguess2 = osguess1
}
let arch = osguess.guessArch(FILENAME, entries);
2021-07-15 15:26:36 +00:00
let asar = finder.asar(entries);
let binary = finder.binary(entries);
let versionFiles = finder.version(entries);
let enm = finder.findElectronPackageInsideNodeModules(entries);
2021-07-15 21:03:09 +00:00
let filesToHash = finder.fingerprintable(entries);
2021-07-16 14:46:29 +00:00
zip.extractSomeFiles(FILENAME, filesToHash, (dir) => {
hashes = fp.getHashes(dir);
guesses = fp.guessFromHashes(osguess2, arch, hashes);
2021-07-16 14:46:29 +00:00
if (guesses.length == 1) {
console.log("Fingerprint: " + guesses[0]);
logSupport(guesses[0])
} else if (guesses.length > 1) {
console.log("Fingerprint: " + V.asText(guesses));
logSupport(V.max(guesses))
2021-07-16 14:46:29 +00:00
}
cleanup.sync(dir);
});
2021-07-16 14:46:29 +00:00
2021-07-15 16:06:12 +00:00
// if (binary) {
// console.log(`${process.argv[2]}:${binary}`);
// }
2021-07-15 15:26:36 +00:00
if (versionFiles.length > 0) {
2021-07-15 16:06:12 +00:00
versionFiles.map((f) => {
zip.readFileContents(FILENAME, f, (c) => {
2021-07-16 15:26:43 +00:00
console.log("Found Version file: " + c);
logSupport(`${c}`)
});
2021-07-15 15:26:36 +00:00
});
}
2021-07-15 21:03:09 +00:00
if (asar.length > 0) {
asar.forEach((a) => {
console.log("Version Constraint (Unsupported): <v7.0.0");
2021-07-15 21:03:09 +00:00
});
}
if (enm) {
enm.forEach((a) => {
zip.readFileContents(FILENAME, a, (c) => {
2021-07-15 21:03:09 +00:00
try {
let packageData = JSON.parse(c);
console.log(
"Found version in package.json file: " + packageData["version"]
);
logSupport(`v${packageData["version"]}`)
} catch (e) {
2021-07-16 06:57:39 +00:00
// TODO: Do something
}
});
2021-07-15 21:03:09 +00:00
});
}
2021-07-15 15:26:36 +00:00
});