better-npm-init
Version:
A better version of npm init, with templates and more. Usage: better-npm-init <template> [--yarn] [--install] [--git] [--yes] [--help]
96 lines (72 loc) • 11.7 kB
JavaScript
;
require("source-map-support/register");
var _core = require("@electron-forge/core");
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _path = _interopRequireDefault(require("path"));
var _commander = _interopRequireDefault(require("commander"));
require("./util/terminate");
var _workingDir = _interopRequireDefault(require("./util/working-dir"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(async () => {
let commandArgs = process.argv;
let appArgs;
const doubleDashIndex = process.argv.indexOf('--');
if (doubleDashIndex !== -1) {
commandArgs = process.argv.slice(0, doubleDashIndex);
appArgs = process.argv.slice(doubleDashIndex + 1);
}
let dir = process.cwd();
_commander.default.version((await _fsExtra.default.readJson(_path.default.resolve(__dirname, '../package.json'))).version).arguments('[cwd]').option('-p, --app-path <path>', "Override the path to the Electron app to launch (defaults to '.')").option('-l, --enable-logging', 'Enable advanced logging. This will log internal Electron things').option('-n, --run-as-node', 'Run the Electron app as a Node.JS script').option('--vscode', 'Used to enable arg transformation for debugging Electron through VSCode. Do not use yourself.').option('-i, --inspect-electron', 'Triggers inspect mode on Electron to allow debugging the main process. Electron >1.7 only').action(cwd => {
dir = (0, _workingDir.default)(dir, cwd);
}).parse(commandArgs);
_commander.default.on('--help', () => {
console.log(' Any arguments found after "--" will be passed to the Electron app, e.g.');
console.log('');
console.log(' $ electron-forge /path/to/project -l -- -d -f foo.txt');
console.log('');
console.log(' will pass the arguments "-d -f foo.txt" to the Electron app');
});
const opts = {
dir,
interactive: true,
enableLogging: !!_commander.default.enableLogging,
runAsNode: !!_commander.default.runAsNode,
inspect: !!_commander.default.inspectElectron
};
if (_commander.default.vscode && appArgs) {
// Args are in the format ~arg~ so we need to strip the "~"
appArgs = appArgs.map(arg => arg.substr(1, arg.length - 2)).filter(arg => arg.length > 0);
}
if (_commander.default.appPath) opts.appPath = _commander.default.appPath;
if (appArgs) opts.args = appArgs;
const spawned = await _core.api.start(opts);
await new Promise(resolve => {
const listenForExit = child => {
// Why: changing to const causes TypeScript compilation to fail.
/* eslint-disable prefer-const */
let onExit;
let onRestart;
/* eslint-enable prefer-const */
const removeListeners = () => {
child.removeListener('exit', onExit);
child.removeListener('restarted', onRestart);
};
onExit = code => {
removeListeners();
if (spawned.restarted) return;
if (code !== 0) {
process.exit(code);
}
resolve();
};
onRestart = newChild => {
removeListeners();
listenForExit(newChild);
};
child.on('exit', onExit);
child.on('restarted', onRestart);
};
listenForExit(spawned);
});
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbGVjdHJvbi1mb3JnZS1zdGFydC50cyJdLCJuYW1lcyI6WyJjb21tYW5kQXJncyIsInByb2Nlc3MiLCJhcmd2IiwiYXBwQXJncyIsImRvdWJsZURhc2hJbmRleCIsImluZGV4T2YiLCJzbGljZSIsImRpciIsImN3ZCIsInByb2dyYW0iLCJ2ZXJzaW9uIiwiZnMiLCJyZWFkSnNvbiIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiYXJndW1lbnRzIiwib3B0aW9uIiwiYWN0aW9uIiwicGFyc2UiLCJvbiIsImNvbnNvbGUiLCJsb2ciLCJvcHRzIiwiaW50ZXJhY3RpdmUiLCJlbmFibGVMb2dnaW5nIiwicnVuQXNOb2RlIiwiaW5zcGVjdCIsImluc3BlY3RFbGVjdHJvbiIsInZzY29kZSIsIm1hcCIsImFyZyIsInN1YnN0ciIsImxlbmd0aCIsImZpbHRlciIsImFwcFBhdGgiLCJhcmdzIiwic3Bhd25lZCIsImFwaSIsInN0YXJ0IiwiUHJvbWlzZSIsImxpc3RlbkZvckV4aXQiLCJjaGlsZCIsIm9uRXhpdCIsIm9uUmVzdGFydCIsInJlbW92ZUxpc3RlbmVycyIsInJlbW92ZUxpc3RlbmVyIiwiY29kZSIsInJlc3RhcnRlZCIsImV4aXQiLCJuZXdDaGlsZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUEsQ0FBQyxZQUFZO0FBQ1gsTUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUNDLElBQTFCO0FBQ0EsTUFBSUMsT0FBSjtBQUVBLFFBQU1DLGVBQWUsR0FBR0gsT0FBTyxDQUFDQyxJQUFSLENBQWFHLE9BQWIsQ0FBcUIsSUFBckIsQ0FBeEI7O0FBQ0EsTUFBSUQsZUFBZSxLQUFLLENBQUMsQ0FBekIsRUFBNEI7QUFDMUJKLElBQUFBLFdBQVcsR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWFJLEtBQWIsQ0FBbUIsQ0FBbkIsRUFBc0JGLGVBQXRCLENBQWQ7QUFDQUQsSUFBQUEsT0FB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RUFBZ0I7QUFDZDlDLFVBQUFBLE9BQU8sQ0FBQ2dELElBQVIsQ0FBYUYsSUFBYjtBQUNEOztBQUNEakMsUUFBQUEsT0FBTztBQUNSLE9BUEQ7O0FBUUE4QixNQUFBQSxTQUFTLEdBQUlNLFFBQUQsSUFBK0I7QUFDekNMLFFBQUFBLGVBQWU7QUFDZkosUUFBQUEsYUFBYSxDQUFDUyxRQUFELENBQWI7QUFDRCxPQUhEOztBQUlBUixNQUFBQSxLQUFLLENBQUN0QixFQUFOLENBQVMsTUFBVCxFQUFpQnVCLE1BQWpCO0FBQ0FELE1BQUFBLEtBQUssQ0FBQ3RCLEVBQU4sQ0FBUyxXQUFULEVBQXNCd0IsU0FBdEI7QUFDRCxLQXhCRDs7QUF5QkFILElBQUFBLGFBQWEsQ0FBQ0osT0FBRCxDQUFiO0FBQ0QsR0EzQkssQ0FBTjtBQTRCRCxDQTlFRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwaSwgU3RhcnRPcHRpb25zIH0gZnJvbSAnQGVsZWN0cm9uLWZvcmdlL2NvcmUnO1xuaW1wb3J0IHsgRWxlY3Ryb25Qcm9jZXNzIH0gZnJvbSAnQGVsZWN0cm9uLWZvcmdlL3NoYXJlZC10eXBlcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcHJvZ3JhbSBmcm9tICdjb21tYW5kZXInO1xuXG5pbXBvcnQgJy4vdXRpbC90ZXJtaW5hdGUnO1xuaW1wb3J0IHdvcmtpbmdEaXIgZnJvbSAnLi91dGlsL3dvcmtpbmctZGlyJztcblxuKGFzeW5jICgpID0+IHtcbiAgbGV0IGNvbW1hbmRBcmdzID0gcHJvY2Vzcy5hcmd2O1xuICBsZXQgYXBwQXJncztcblxuICBjb25zdCBkb3VibGVEYXNoSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZignLS0nKTtcbiAgaWYgKGRvdWJsZURhc2hJbmRleCAhPT0gLTEpIHtcbiAgICBjb21tYW5kQXJncyA9IHByb2Nlc3MuYXJndi5zbGljZSgwLCBkb3VibGVEYXNoSW5kZXgpO1xuICAgIGFwcEFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoZG91YmxlRGFzaEluZGV4ICsgMSk7XG4gIH1cblxuICBsZXQgZGlyID0gcHJvY2Vzcy5jd2QoKTtcbiAgcHJvZ3JhbVxuICAgIC52ZXJzaW9uKChhd2FpdCBmcy5yZWFkSnNvbihwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vcGFja2FnZS5qc29uJykpKS52ZXJzaW9uKVxuICAgIC5hcmd1bWVudHMoJ1tjd2RdJylcbiAgICAub3B0aW9uKCctcCwgLS1hcHAtcGF0aCA8cGF0aD4nLCBcIk92ZXJyaWRlIHRoZSBwYXRoIHRvIHRoZSBFbGVjdHJvbiBhcHAgdG8gbGF1bmNoIChkZWZhdWx0cyB0byAnLicpXCIpXG4gICAgLm9wdGlvbignLWwsIC0tZW5hYmxlLWxvZ2dpbmcnLCAnRW5hYmxlIGFkdmFuY2VkIGxvZ2dpbmcuICBUaGlzIHdpbGwgbG9nIGludGVybmFsIEVsZWN0cm9uIHRoaW5ncycpXG4gICAgLm9wdGlvbignLW4sIC0tcnVuLWFzLW5vZGUnLCAnUnVuIHRoZSBFbGVjdHJvbiBhcHAgYXMgYSBOb2RlLkpTIHNjcmlwdCcpXG4gICAgLm9wdGlvbignLS12c2NvZGUnLCAnVXNlZCB0byBlbmFibGUgYXJnIHRyYW5zZm9ybWF0aW9uIGZvciBkZWJ1Z2dpbmcgRWxlY3Ryb24gdGhyb3VnaCBWU0NvZGUuICBEbyBub3QgdXNlIHlvdXJzZWxmLicpXG4gICAgLm9wdGlvbignLWksIC0taW5zcGVjdC1lbGVjdHJvbicsICdUcmlnZ2VycyBpbnNwZWN0IG1vZGUgb24gRWxlY3Ryb24gdG8gYWxsb3cgZGVidWdnaW5nIHRoZSBtYWluIHByb2Nlc3MuICBFbGVjdHJvbiA+MS43IG9ubHknKVxuICAgIC5hY3Rpb24oKGN3ZCkgPT4ge1xuICAgICAgZGlyID0gd29ya2luZ0RpcihkaXIsIGN3ZCk7XG4gICAgfSlcbiAgICAucGFyc2UoY29tbWFuZEFyZ3MpO1xuXG4gIHByb2dyYW0ub24oJy0taGVscCcsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnICBBbnkgYXJndW1lbnRzIGZvdW5kIGFmdGVyIFwiLS1cIiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgRWxlY3Ryb24gYXBwLCBlLmcuJyk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIGNvbnNvbGUubG9nKCcgICAgJCBlbGVjdHJvbi1mb3JnZSAvcGF0aC90by9wcm9qZWN0IC1sIC0tIC1kIC1mIGZvby50eHQnKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgY29uc29sZS5sb2coJyAgd2lsbCBwYXNzIHRoZSBhcmd1bWVudHMgXCItZCAtZiBmb28udHh0XCIgdG8gdGhlIEVsZWN0cm9uIGFwcCcpO1xuICB9KTtcblxuICBjb25zdCBvcHRzOiBTdGFydE9wdGlvbnMgPSB7XG4gICAgZGlyLFxuICAgIGludGVyYWN0aXZlOiB0cnVlLFxuICAgIGVuYWJsZUxvZ2dpbmc6ICEhcHJvZ3JhbS5lbmFibGVMb2dnaW5nLFxuICAgIHJ1bkFzTm9kZTogISFwcm9ncmFtLnJ1bkFzTm9kZSxcbiAgICBpbnNwZWN0OiAhIXByb2dyYW0uaW5zcGVjdEVsZWN0cm9uLFxuICB9O1xuXG4gIGlmIChwcm9ncmFtLnZzY29kZSAmJiBhcHBBcmdzKSB7XG4gICAgLy8gQXJncyBhcmUgaW4gdGhlIGZvcm1hdCB+YXJnfiBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZSBcIn5cIlxuICAgIGFwcEFyZ3MgPSBhcHBBcmdzLm1hcCgoYXJnKSA9PiBhcmcuc3Vic3RyKDEsIGFyZy5sZW5ndGggLSAyKSkuZmlsdGVyKChhcmcpID0+IGFyZy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIGlmIChwcm9ncmFtLmFwcFBhdGgpIG9wdHMuYXBwUGF0aCA9IHByb2dyYW0uYXBwUGF0aDtcbiAgaWYgKGFwcEFyZ3MpIG9wdHMuYXJncyA9IGFwcEFyZ3M7XG5cbiAgY29uc3Qgc3Bhd25lZCA9IGF3YWl0IGFwaS5zdGFydChvcHRzKTtcblxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGxpc3RlbkZvckV4aXQgPSAoY2hpbGQ6IEVsZWN0cm9uUHJvY2VzcykgPT4ge1xuICAgICAgLy8gV2h5OiBjaGFuZ2luZyB0byBjb25zdCBjYXVzZXMgVHlwZVNjcmlwdCBjb21waWxhdGlvbiB0byBmYWlsLlxuICAgICAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWNvbnN0ICovXG4gICAgICBsZXQgb25FeGl0OiBOb2RlSlMuRXhpdExpc3RlbmVyO1xuICAgICAgbGV0IG9uUmVzdGFydDogKG5ld0NoaWxkOiBFbGVjdHJvblByb2Nlc3MpID0+IHZvaWQ7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHByZWZlci1jb25zdCAqL1xuICAgICAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgICAgICBjaGlsZC5yZW1vdmVMaXN0ZW5lcignZXhpdCcsIG9uRXhpdCk7XG4gICAgICAgIGNoaWxkLnJlbW92ZUxpc3RlbmVyKCdyZXN0YXJ0ZWQnLCBvblJlc3RhcnQpO1xuICAgICAgfTtcbiAgICAgIG9uRXhpdCA9IChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgICAgIGlmIChzcGF3bmVkLnJlc3RhcnRlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgb25SZXN0YXJ0ID0gKG5ld0NoaWxkOiBFbGVjdHJvblByb2Nlc3MpID0+IHtcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgICAgIGxpc3RlbkZvckV4aXQobmV3Q2hpbGQpO1xuICAgICAgfTtcbiAgICAgIGNoaWxkLm9uKCdleGl0Jywgb25FeGl0KTtcbiAgICAgIGNoaWxkLm9uKCdyZXN0YXJ0ZWQnLCBvblJlc3RhcnQpO1xuICAgIH07XG4gICAgbGlzdGVuRm9yRXhpdChzcGF3bmVkIGFzIEVsZWN0cm9uUHJvY2Vzcyk7XG4gIH0pO1xufSkoKTtcbiJdfQ==