| '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; |