diff --git a/src/lib/bootstrap.js b/src/lib/bootstrap.js index a4ec9eb87..9af78d311 100644 --- a/src/lib/bootstrap.js +++ b/src/lib/bootstrap.js @@ -23,7 +23,7 @@ const constants = require('constants'); - localhost:5557 @return {Array} */ -function get_listen_addresses(argListen, configListen) { +function getListListenAddresses(argListen, configListen) { // command line || config file || default let addresses; if (argListen) { @@ -59,15 +59,18 @@ function get_listen_addresses(argListen, configListen) { * @param {String} pkgVersion * @param {String} pkgName */ -function afterConfigLoad(config, cliArguments, config_path, pkgVersion, pkgName) { +function startVerdaccio(config, cliListen, config_path, pkgVersion, pkgName, callback) { if (!config.self_path) { config.self_path = Path.resolve(config_path); } if (!config.https) { config.https = {enable: false}; } + const app = server(config); - get_listen_addresses(cliArguments.listen, config.listen).forEach(function(addr) { + const addresses = getListListenAddresses(cliListen, config.listen); + + addresses.forEach(function(addr) { let webServer; if (addr.proto === 'https') { // https must either have key cert and ca or a pfx and (optionally) a passphrase if (!config.https || !config.https.key || !config.https.cert || !config.https.ca) { @@ -131,28 +134,7 @@ function afterConfigLoad(config, cliArguments, config_path, pkgVersion, pkgName) fs.unlinkSync(addr.path); } - webServer - .listen(addr.port || addr.path, addr.host) - .on('error', function(err) { - logger.logger.fatal({err: err}, 'cannot create server: @{err.message}'); - process.exit(2); - }); - - logger.logger.warn({ - addr: ( addr.path - ? URL.format({ - protocol: 'unix', - pathname: addr.path, - }) - : URL.format({ - protocol: addr.proto, - hostname: addr.host, - port: addr.port, - pathname: '/', - }) - ), - version: pkgName + '/' + pkgVersion, - }, 'http address - @{addr} - @{version}'); + callback(webServer, addr, pkgName, pkgVersion); }); // undocumented stuff for tests @@ -163,4 +145,27 @@ function afterConfigLoad(config, cliArguments, config_path, pkgVersion, pkgName) } } -export {afterConfigLoad}; +function listenDefaultCallback(webServer, addr, pkgName, pkgVersion) { + webServer.listen(addr.port || addr.path, addr.host).on('error', function(err) { + logger.logger.fatal({err: err}, 'cannot create server: @{err.message}'); + process.exit(2); + }); + + logger.logger.warn({ + addr: ( addr.path + ? URL.format({ + protocol: 'unix', + pathname: addr.path, + }) + : URL.format({ + protocol: addr.proto, + hostname: addr.host, + port: addr.port, + pathname: '/', + }) + ), + version: pkgName + '/' + pkgVersion, + }, 'http address - @{addr} - @{version}'); +} + +export {startVerdaccio, listenDefaultCallback}; diff --git a/src/lib/cli.js b/src/lib/cli.js index e676ae0ed..158c0d40c 100644 --- a/src/lib/cli.js +++ b/src/lib/cli.js @@ -2,7 +2,8 @@ /* eslint no-sync:0 */ /* eslint no-empty:0 */ -import {afterConfigLoad} from './bootstrap'; + +import {startVerdaccio, listenDefaultCallback} from './bootstrap'; import findConfigFile from './config-path'; if (process.getuid && process.getuid() === 0) { @@ -41,25 +42,23 @@ if (commander.args.length == 1 && !commander.config) { if (commander.args.length !== 0) { commander.help(); } +let verdaccioConfiguration; +let configPathLocation; +const cliListner = commander.listen; -let config; -let config_path; try { - if (commander.config) { - config_path = path.resolve(commander.config); - } else { - config_path = findConfigFile(); - } - config = Utils.parseConfigFile(config_path); - logger.logger.warn({file: config_path}, 'config file - @{file}'); + configPathLocation = commander.config ? path.resolve(commander.config) : findConfigFile(); + verdaccioConfiguration = Utils.parseConfigFile(configPathLocation); + + logger.logger.warn({file: configPathLocation}, 'config file - @{file}'); } catch (err) { - logger.logger.fatal({file: config_path, err: err}, 'cannot open config file @{file}: @{!err.message}'); + logger.logger.fatal({file: configPathLocation, err: err}, 'cannot open config file @{file}: @{!err.message}'); process.exit(1); } process.title = config.web && config.web.title || 'verdaccio'; -afterConfigLoad(config, commander, config_path, pkgVersion, pkgName); +startVerdaccio(verdaccioConfiguration, cliListner, configPathLocation, pkgVersion, pkgName, listenDefaultCallback); process.on('uncaughtException', function(err) { logger.logger.fatal( {