require('./pre')(config, function (err, release) { if (err) { log.error('pre', 'Failed to determine new version.'); var args = ['pre', (err.code ? err.code + ' ' : '') + err.message]; if (err.stack) args.push(err.stack); log.error.apply(log, args); process.exit(1); } var message = 'Determined version ' + release.version + ' as "' + npm.tag + '".'; log.verbose('pre', message); if (options.debug) { log.error('pre', message + ' Not publishing in debug mode.', release); process.exit(1); } try { var shrinkwrap = JSON.parse(readFileSync('./npm-shrinkwrap.json')); shrinkwrap.version = release.version; writeFileSync('./npm-shrinkwrap.json', JSON.stringify(shrinkwrap, null, 2)); log.verbose('pre', 'Wrote version ' + release.version + ' to npm-shrinkwrap.json.'); } catch (e) { log.silly('pre', 'Couldn\'t find npm-shrinkwrap.json.'); } writeFileSync('./package.json', JSON.stringify(_.assign(pkg, { version: release.version }), null, 2)); log.verbose('pre', 'Wrote version ' + release.version + ' to package.json.'); });
settings.list(['smtpHostname', 'smtpPort', 'smtpEncryption', 'smtpUser', 'smtpPass', 'smtpLog', 'smtpDisableAuth', 'smtpMaxConnections', 'smtpMaxMessages', 'smtpSelfSigned', 'pgpPrivateKey', 'pgpPassphrase', 'smtpThrottling'], (err, configItems) => { if (err) { return callback(err); } let oldListeners = []; if (module.exports.transport) { oldListeners = module.exports.transport.listeners('idle'); module.exports.transport.removeAllListeners('idle'); module.exports.transport.removeAllListeners('stream'); module.exports.transport.checkThrottling = null; } module.exports.transport = nodemailer.createTransport({ pool: true, host: configItems.smtpHostname, port: Number(configItems.smtpPort) || false, secure: configItems.smtpEncryption === 'TLS', ignoreTLS: configItems.smtpEncryption === 'NONE', auth: configItems.smtpDisableAuth ? false : { user: configItems.smtpUser, pass: configItems.smtpPass }, debug: !!configItems.smtpLog, logger: !configItems.smtpLog ? false : { debug: log.verbose.bind(log, 'Mail'), info: log.info.bind(log, 'Mail'), error: log.error.bind(log, 'Mail') }, maxConnections: Number(configItems.smtpMaxConnections), maxMessages: Number(configItems.smtpMaxMessages), tls: { rejectUnauthorized: !configItems.smtpSelfSigned } }); module.exports.transport.use('stream', openpgpEncrypt({ signingKey: configItems.pgpPrivateKey, passphrase: configItems.pgpPassphrase })); if (oldListeners.length) { log.info('Mail', 'Reattaching %s idle listeners', oldListeners.length); oldListeners.forEach(listener => module.exports.transport.on('idle', listener)); } let throttling = Number(configItems.smtpThrottling) || 0; if (throttling) { // convert to messages/second throttling = 1 / (throttling / (3600 * 1000)); } let lastCheck = Date.now(); module.exports.transport.checkThrottling = function (next) { if (!throttling) { return next(); } let nextCheck = Date.now(); let checkDiff = (nextCheck - lastCheck); lastCheck = nextCheck; if (checkDiff < throttling) { log.verbose('Mail', 'Throttling next message in %s sec.', (throttling - checkDiff) / 1000); setTimeout(next, throttling - checkDiff); } else { next(); } }; caches.cache.delete('sender queue'); return callback(null, module.exports.transport); });
log.fatal = function() { log.error.apply(log, arguments); process.exit(1); };
msg.summary.concat(msg.detail).forEach(function (errline) { log.error.apply(log, errline) })