|
"use strict"; |
|
|
|
const debug = require('debug')('cypress:cli'); |
|
const util = require('../util'); |
|
const spawn = require('./spawn'); |
|
const verify = require('../tasks/verify'); |
|
const { |
|
processTestingType, |
|
checkConfigFile |
|
} = require('./shared'); |
|
const { |
|
exitWithError |
|
} = require('../errors'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const processOpenOptions = (options = {}) => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!util.isInstalledGlobally() && !options.global && !options.project) { |
|
options.project = process.cwd(); |
|
} |
|
const args = []; |
|
if (options.config) { |
|
args.push('--config', options.config); |
|
} |
|
if (options.configFile !== undefined) { |
|
checkConfigFile(options); |
|
args.push('--config-file', options.configFile); |
|
} |
|
if (options.browser) { |
|
args.push('--browser', options.browser); |
|
} |
|
if (options.env) { |
|
args.push('--env', options.env); |
|
} |
|
if (options.port) { |
|
args.push('--port', options.port); |
|
} |
|
if (options.project) { |
|
args.push('--project', options.project); |
|
} |
|
if (options.global) { |
|
args.push('--global', options.global); |
|
} |
|
if (options.inspect) { |
|
args.push('--inspect'); |
|
} |
|
if (options.inspectBrk) { |
|
args.push('--inspectBrk'); |
|
} |
|
args.push(...processTestingType(options)); |
|
debug('opening from options %j', options); |
|
debug('command line arguments %j', args); |
|
return args; |
|
}; |
|
module.exports = { |
|
processOpenOptions, |
|
start(options = {}) { |
|
function open() { |
|
try { |
|
const args = processOpenOptions(options); |
|
return spawn.start(args, { |
|
dev: options.dev, |
|
detached: Boolean(options.detached) |
|
}); |
|
} catch (err) { |
|
if (err.details) { |
|
return exitWithError(err.details)(); |
|
} |
|
throw err; |
|
} |
|
} |
|
if (options.dev) { |
|
return open(); |
|
} |
|
return verify.start().then(open); |
|
} |
|
}; |