@electron/packager
Version:
Customize and package your Electron app with OS-specific bundles (.app, .exe, etc.) via JS or CLI
139 lines • 5.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.run = exports.parseArgs = void 0;
const common_1 = require("./common");
const fs_extra_1 = __importDefault(require("fs-extra"));
const get_1 = require("@electron/get");
const packager_1 = require("./packager");
const path_1 = __importDefault(require("path"));
const yargs_parser_1 = __importDefault(require("yargs-parser"));
/* istanbul ignore next */
async function printUsageAndExit(isError) {
const usage = (await fs_extra_1.default.readFile(path_1.default.resolve(__dirname, '..', 'usage.txt'))).toString();
const print = isError ? console.error : console.log;
print(usage);
process.exit(isError ? 1 : 0);
}
function parseArgs(argv) {
const args = (0, yargs_parser_1.default)(argv, {
boolean: ['all', 'deref-symlinks', 'junk', 'overwrite', 'prune', 'quiet'],
default: {
'deref-symlinks': true,
junk: true,
prune: true,
},
string: ['electron-version', 'out'],
});
args.dir = args._[0];
args.name = args._[1];
const protocolSchemes = [].concat(args.protocol || []);
const protocolNames = [].concat(args.protocolName || []);
if (protocolSchemes &&
protocolNames &&
protocolNames.length === protocolSchemes.length) {
args.protocols = protocolSchemes.map(function (scheme, i) {
return { schemes: [scheme], name: protocolNames[i] };
});
}
if (args.out === '') {
(0, common_1.warning)('Specifying --out= without a value is the same as the default value', args.quiet);
args.out = null;
}
// Overrides for multi-typed arguments, because minimist doesn't support it
// asar: `Object` or `true`
if (args.asar === 'true' || args.asar instanceof Array) {
(0, common_1.warning)('--asar does not take any arguments, it only has sub-properties (see --help)', args.quiet);
args.asar = true;
}
// windows-sign: `Object` or `true`
if (args.windowsSign === 'true') {
(0, common_1.warning)('--windows-sign does not take any arguments, it only has sub-properties (see --help)', args.quiet);
args.windowsSign = true;
}
else if (typeof args['windows-sign'] === 'object') {
if (Array.isArray(args['windows-sign'])) {
(0, common_1.warning)('Remove --windows-sign (the bare flag) from the command line, only specify sub-properties (see --help)', args.quiet);
}
else {
// Keep kebab case of sub properties
args.windowsSign = args['windows-sign'];
}
}
// osx-sign: `Object` or `true`
if (args.osxSign === 'true') {
(0, common_1.warning)('--osx-sign does not take any arguments, it only has sub-properties (see --help)', args.quiet);
args.osxSign = true;
}
else if (typeof args['osx-sign'] === 'object') {
if (Array.isArray(args['osx-sign'])) {
(0, common_1.warning)('Remove --osx-sign (the bare flag) from the command line, only specify sub-properties (see --help)', args.quiet);
}
else {
// Keep kebab case of sub properties
args.osxSign = args['osx-sign'];
}
}
if (args.osxNotarize) {
let notarize = true;
if (typeof args.osxNotarize !== 'object' ||
Array.isArray(args.osxNotarize)) {
(0, common_1.warning)('--osx-notarize does not take any arguments, it only has sub-properties (see --help)', args.quiet);
notarize = false;
}
else if (!args.osxSign) {
(0, common_1.warning)('Notarization was enabled but macOS code signing was not, code signing is a requirement for notarization, notarize will not run', args.quiet);
notarize = false;
}
if (!notarize) {
args.osxNotarize = null;
}
}
// tmpdir: `String` or `false`
if (args.tmpdir === 'false') {
(0, common_1.warning)('--tmpdir=false is deprecated, use --no-tmpdir instead', args.quiet);
args.tmpdir = false;
}
return args;
}
exports.parseArgs = parseArgs;
/* istanbul ignore next */ async function run(argv) {
const args = parseArgs(argv);
if (args.help) {
await printUsageAndExit(false);
}
else if (args.version) {
if (typeof args.version !== 'boolean') {
console.error('--version does not take an argument. Perhaps you meant --app-version or --electron-version?\n');
}
console.log((0, common_1.hostInfo)());
process.exit(0);
}
else if (!args.dir) {
await printUsageAndExit(true);
}
(0, get_1.initializeProxy)();
try {
const appPaths = await (0, packager_1.packager)(args);
if (appPaths.length > 1) {
(0, common_1.info)(`Wrote new apps to:\n${appPaths.join('\n')}`, args.quiet);
}
else if (appPaths.length === 1) {
(0, common_1.info)(`Wrote new app to: ${appPaths[0]}`, args.quiet);
}
}
catch (e) {
const err = e;
if (err.message) {
console.error(err.message);
}
else {
console.error(err, err.stack);
}
process.exit(1);
}
}
exports.run = run;
//# sourceMappingURL=cli.js.map