mirror of https://github.com/jiahaog/Nativefier
83 lines
1.8 KiB
JavaScript
83 lines
1.8 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import helpers from './helpers';
|
|
|
|
const { isOSX, isWindows, isLinux } = helpers;
|
|
|
|
/**
|
|
* Synchronously find a file or directory
|
|
* @param {RegExp} pattern regex
|
|
* @param {string} base path
|
|
* @param {boolean} [findDir] if true, search results will be limited to only directories
|
|
* @returns {Array}
|
|
*/
|
|
function findSync(pattern, basePath, findDir) {
|
|
const matches = [];
|
|
|
|
(function findSyncRecurse(base) {
|
|
let children;
|
|
try {
|
|
children = fs.readdirSync(base);
|
|
} catch (exception) {
|
|
if (exception.code === 'ENOENT') {
|
|
return;
|
|
}
|
|
throw exception;
|
|
}
|
|
|
|
children.forEach((child) => {
|
|
const childPath = path.join(base, child);
|
|
const childIsDirectory = fs.lstatSync(childPath).isDirectory();
|
|
const patternMatches = pattern.test(childPath);
|
|
|
|
if (!patternMatches) {
|
|
if (!childIsDirectory) {
|
|
return;
|
|
}
|
|
findSyncRecurse(childPath);
|
|
return;
|
|
}
|
|
|
|
if (!findDir) {
|
|
matches.push(childPath);
|
|
return;
|
|
}
|
|
|
|
if (childIsDirectory) {
|
|
matches.push(childPath);
|
|
}
|
|
});
|
|
}(basePath));
|
|
return matches;
|
|
}
|
|
|
|
function linuxMatch() {
|
|
return findSync(/libpepflashplayer\.so/, '/opt/google/chrome')[0];
|
|
}
|
|
|
|
function windowsMatch() {
|
|
return findSync(/pepflashplayer\.dll/, 'C:\\Program Files (x86)\\Google\\Chrome')[0];
|
|
}
|
|
|
|
function darwinMatch() {
|
|
return findSync(/PepperFlashPlayer.plugin/, '/Applications/Google Chrome.app/', true)[0];
|
|
}
|
|
|
|
function inferFlash() {
|
|
if (isOSX()) {
|
|
return darwinMatch();
|
|
}
|
|
|
|
if (isWindows()) {
|
|
return windowsMatch();
|
|
}
|
|
|
|
if (isLinux()) {
|
|
return linuxMatch();
|
|
}
|
|
|
|
console.warn('Unable to determine OS to infer flash player');
|
|
return null;
|
|
}
|
|
export default inferFlash;
|