|
"use strict"; |
|
|
|
const Promise = require('bluebird'); |
|
const debug = require('debug')('cypress:cli'); |
|
const path = require('path'); |
|
const util = require('../util'); |
|
const state = require('../tasks/state'); |
|
const { |
|
throwFormErrorText, |
|
errors |
|
} = require('../errors'); |
|
const getVersions = () => { |
|
return Promise.try(() => { |
|
if (util.getEnv('CYPRESS_RUN_BINARY')) { |
|
let envBinaryPath = path.resolve(util.getEnv('CYPRESS_RUN_BINARY')); |
|
return state.parseRealPlatformBinaryFolderAsync(envBinaryPath).then(envBinaryDir => { |
|
if (!envBinaryDir) { |
|
return throwFormErrorText(errors.CYPRESS_RUN_BINARY.notValid(envBinaryPath))(); |
|
} |
|
debug('CYPRESS_RUN_BINARY has binaryDir:', envBinaryDir); |
|
return envBinaryDir; |
|
}).catch({ |
|
code: 'ENOENT' |
|
}, err => { |
|
return throwFormErrorText(errors.CYPRESS_RUN_BINARY.notValid(envBinaryPath))(err.message); |
|
}); |
|
} |
|
return state.getBinaryDir(); |
|
}).then(state.getBinaryPkgAsync).then(pkg => { |
|
const versions = { |
|
binary: state.getBinaryPkgVersion(pkg), |
|
electronVersion: state.getBinaryElectronVersion(pkg), |
|
electronNodeVersion: state.getBinaryElectronNodeVersion(pkg) |
|
}; |
|
debug('binary versions %o', versions); |
|
return versions; |
|
}).then(binaryVersions => { |
|
const buildInfo = util.pkgBuildInfo(); |
|
let packageVersion = util.pkgVersion(); |
|
if (!buildInfo) packageVersion += ' (development)';else if (!buildInfo.stable) packageVersion += ' (pre-release)'; |
|
const versions = { |
|
package: packageVersion, |
|
binary: binaryVersions.binary || 'not installed', |
|
electronVersion: binaryVersions.electronVersion || 'not found', |
|
electronNodeVersion: binaryVersions.electronNodeVersion || 'not found' |
|
}; |
|
debug('combined versions %o', versions); |
|
return versions; |
|
}); |
|
}; |
|
module.exports = { |
|
getVersions |
|
}; |