You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
4 years ago
|
'use strict';
|
||
|
|
||
|
const createConfig = require('./createConfig');
|
||
|
const defaultPort = require('./defaultPort');
|
||
|
const findPort = require('./findPort');
|
||
|
|
||
|
function processOptions(config, argv, callback) {
|
||
|
// processOptions {Promise}
|
||
|
if (typeof config.then === 'function') {
|
||
|
config
|
||
|
.then((conf) => processOptions(conf, argv, callback))
|
||
|
.catch((err) => {
|
||
|
// eslint-disable-next-line no-console
|
||
|
console.error(err.stack || err);
|
||
|
// eslint-disable-next-line no-process-exit
|
||
|
process.exit(1);
|
||
|
});
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Taken out of yargs because we must know if
|
||
|
// it wasn't given by the user, in which case
|
||
|
// we should use portfinder.
|
||
|
const options = createConfig(config, argv, { port: defaultPort });
|
||
|
|
||
|
if (options.socket) {
|
||
|
callback(config, options);
|
||
|
} else {
|
||
|
findPort(options.port)
|
||
|
.then((port) => {
|
||
|
options.port = port;
|
||
|
callback(config, options);
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
// eslint-disable-next-line no-console
|
||
|
console.error(err.stack || err);
|
||
|
// eslint-disable-next-line no-process-exit
|
||
|
process.exit(1);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = processOptions;
|