@sharekey/meteor-desktop
Version:
Build a Meteor's desktop client with hot code push.
63 lines (61 loc) • 8.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _path = _interopRequireDefault(require("path"));
var _isbinaryfile = _interopRequireDefault(require("isbinaryfile"));
var _shelljs = _interopRequireDefault(require("shelljs"));
var _log = _interopRequireDefault(require("./log"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_shelljs.default.config.fatal = true;
/**
* Experimental module for detecting modules containing binary files.
* Based on the same functionality from electron-builder.
*
* @property {MeteorDesktop} $
* @class
*/
class BinaryModulesDetector {
/**
* @constructor
*/
constructor(nodeModulesPath) {
this.log = new _log.default('binaryModulesDetector');
this.nodeModulesPath = nodeModulesPath;
}
// TODO: make asynchronous
detect() {
this.log.verbose('detecting node modules with binary files');
const files = _shelljs.default.ls('-RAl', this.nodeModulesPath);
const extract = [];
files.forEach(file => {
const pathSplit = file.name.split(_path.default.posix.sep);
const dir = pathSplit[0];
const filename = pathSplit.pop();
if (extract.indexOf(dir) === -1 && !BinaryModulesDetector.shouldBeIgnored(dir, filename)) {
if (file.isFile()) {
let shouldUnpack = false;
if (file.name.endsWith('.dll') || file.name.endsWith('.exe') || file.name.endsWith('.dylib')) {
shouldUnpack = true;
} else if (_path.default.extname(file.name) === '') {
shouldUnpack = _isbinaryfile.default.sync(_path.default.join(this.nodeModulesPath, file.name));
}
if (shouldUnpack) {
this.log.debug(`binary file: ${file.name}`);
extract.push(dir);
}
}
}
});
if (extract.length > 0) {
this.log.verbose(`detected modules to be extracted: ${extract.join(', ')}`);
}
return extract;
}
static shouldBeIgnored(dir, filename) {
return dir === '.bin' || filename === '.DS_Store' || filename === 'LICENSE' || filename === 'README';
}
}
exports.default = BinaryModulesDetector;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2lzYmluYXJ5ZmlsZSIsIl9zaGVsbGpzIiwiX2xvZyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwic2hlbGwiLCJjb25maWciLCJmYXRhbCIsIkJpbmFyeU1vZHVsZXNEZXRlY3RvciIsImNvbnN0cnVjdG9yIiwibm9kZU1vZHVsZXNQYXRoIiwibG9nIiwiTG9nIiwiZGV0ZWN0IiwidmVyYm9zZSIsImZpbGVzIiwibHMiLCJleHRyYWN0IiwiZm9yRWFjaCIsImZpbGUiLCJwYXRoU3BsaXQiLCJuYW1lIiwic3BsaXQiLCJwYXRoIiwicG9zaXgiLCJzZXAiLCJkaXIiLCJmaWxlbmFtZSIsInBvcCIsImluZGV4T2YiLCJzaG91bGRCZUlnbm9yZWQiLCJpc0ZpbGUiLCJzaG91bGRVbnBhY2siLCJlbmRzV2l0aCIsImV4dG5hbWUiLCJpc0JpbmFyeUZpbGUiLCJzeW5jIiwiam9pbiIsImRlYnVnIiwicHVzaCIsImxlbmd0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9saWIvYmluYXJ5TW9kdWxlc0RldGVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGlzQmluYXJ5RmlsZSBmcm9tICdpc2JpbmFyeWZpbGUnO1xuaW1wb3J0IHNoZWxsIGZyb20gJ3NoZWxsanMnO1xuXG5pbXBvcnQgTG9nIGZyb20gJy4vbG9nJztcblxuc2hlbGwuY29uZmlnLmZhdGFsID0gdHJ1ZTtcbi8qKlxuICogRXhwZXJpbWVudGFsIG1vZHVsZSBmb3IgZGV0ZWN0aW5nIG1vZHVsZXMgY29udGFpbmluZyBiaW5hcnkgZmlsZXMuXG4gKiBCYXNlZCBvbiB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGZyb20gZWxlY3Ryb24tYnVpbGRlci5cbiAqXG4gKiBAcHJvcGVydHkge01ldGVvckRlc2t0b3B9ICRcbiAqIEBjbGFzc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaW5hcnlNb2R1bGVzRGV0ZWN0b3Ige1xuICAgIC8qKlxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5vZGVNb2R1bGVzUGF0aCkge1xuICAgICAgICB0aGlzLmxvZyA9IG5ldyBMb2coJ2JpbmFyeU1vZHVsZXNEZXRlY3RvcicpO1xuICAgICAgICB0aGlzLm5vZGVNb2R1bGVzUGF0aCA9IG5vZGVNb2R1bGVzUGF0aDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBtYWtlIGFzeW5jaHJvbm91c1xuICAgIGRldGVjdCgpIHtcbiAgICAgICAgdGhpcy5sb2cudmVyYm9zZSgnZGV0ZWN0aW5nIG5vZGUgbW9kdWxlcyB3aXRoIGJpbmFyeSBmaWxlcycpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IHNoZWxsLmxzKCctUkFsJywgdGhpcy5ub2RlTW9kdWxlc1BhdGgpO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhY3QgPSBbXTtcblxuICAgICAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRoU3BsaXQgPSBmaWxlLm5hbWUuc3BsaXQocGF0aC5wb3NpeC5zZXApO1xuICAgICAgICAgICAgY29uc3QgZGlyID0gcGF0aFNwbGl0WzBdO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoU3BsaXQucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChleHRyYWN0LmluZGV4T2YoZGlyKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAhQmluYXJ5TW9kdWxlc0RldGVjdG9yLnNob3VsZEJlSWdub3JlZChkaXIsIGZpbGVuYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNob3VsZFVucGFjayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5uYW1lLmVuZHNXaXRoKCcuZGxsJykgfHwgZmlsZS5uYW1lLmVuZHNXaXRoKCcuZXhlJykgfHwgZmlsZS5uYW1lLmVuZHNXaXRoKCcuZHlsaWInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkVW5wYWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXRoLmV4dG5hbWUoZmlsZS5uYW1lKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFVucGFjayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCaW5hcnlGaWxlLnN5bmMocGF0aC5qb2luKHRoaXMubm9kZU1vZHVsZXNQYXRoLCBmaWxlLm5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVW5wYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgYmluYXJ5IGZpbGU6ICR7ZmlsZS5uYW1lfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdC5wdXNoKGRpcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZXh0cmFjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy52ZXJib3NlKGBkZXRlY3RlZCBtb2R1bGVzIHRvIGJlIGV4dHJhY3RlZDogJHtleHRyYWN0LmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4dHJhY3Q7XG4gICAgfVxuXG4gICAgc3RhdGljIHNob3VsZEJlSWdub3JlZChkaXIsIGZpbGVuYW1lKSB7XG4gICAgICAgIHJldHVybiBkaXIgPT09ICcuYmluJyB8fCBmaWxlbmFtZSA9PT0gJy5EU19TdG9yZScgfHwgZmlsZW5hbWUgPT09ICdMSUNFTlNFJyB8fCBmaWxlbmFtZSA9PT0gJ1JFQURNRSc7XG4gICAgfVxufVxuIl0s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