mirror of https://github.com/lukechilds/docs.git
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.
96 lines
2.9 KiB
96 lines
2.9 KiB
'use strict';
|
|
|
|
var _ = require('lodash');
|
|
var os = require('os');
|
|
var path = require('path');
|
|
var debug = require('debug')('cypress:cli');
|
|
|
|
var fs = require('../fs');
|
|
|
|
var getPlatformExecutable = function getPlatformExecutable() {
|
|
var platform = os.platform();
|
|
switch (platform) {
|
|
case 'darwin':
|
|
return 'Cypress.app/Contents/MacOS/Cypress';
|
|
case 'linux':
|
|
return 'Cypress/Cypress';
|
|
case 'win32':
|
|
return 'Cypress/Cypress.exe';
|
|
// TODO handle this error using our standard
|
|
default:
|
|
throw new Error('Platform: "' + platform + '" is not supported.');
|
|
}
|
|
};
|
|
|
|
var getInstallationDir = function getInstallationDir() {
|
|
return path.join(__dirname, '..', '..', 'dist');
|
|
};
|
|
|
|
var getInfoFilePath = function getInfoFilePath() {
|
|
var infoPath = path.join(getInstallationDir(), 'info.json');
|
|
debug('path to info.json file %s', infoPath);
|
|
return infoPath;
|
|
};
|
|
|
|
var getInstalledVersion = function getInstalledVersion() {
|
|
return ensureFileInfoContents().tap(debug).get('version');
|
|
};
|
|
|
|
var getVerifiedVersion = function getVerifiedVersion() {
|
|
return ensureFileInfoContents().get('verifiedVersion');
|
|
};
|
|
|
|
var ensureInstallationDir = function ensureInstallationDir() {
|
|
return fs.ensureDirAsync(getInstallationDir());
|
|
};
|
|
|
|
var clearVersionState = function clearVersionState() {
|
|
return ensureFileInfoContents().then(function (contents) {
|
|
return writeInfoFileContents(_.omit(contents, 'version', 'verifiedVersion'));
|
|
});
|
|
};
|
|
|
|
var writeInstalledVersion = function writeInstalledVersion(version) {
|
|
return ensureFileInfoContents().then(function (contents) {
|
|
return writeInfoFileContents(_.extend(contents, { version: version }));
|
|
});
|
|
};
|
|
|
|
var getPathToExecutable = function getPathToExecutable() {
|
|
return path.join(getInstallationDir(), getPlatformExecutable());
|
|
};
|
|
|
|
var getPathToUserExecutableDir = function getPathToUserExecutableDir() {
|
|
return path.join(getInstallationDir(), getPlatformExecutable().split('/')[0]);
|
|
};
|
|
|
|
var getInfoFileContents = function getInfoFileContents() {
|
|
return fs.readJsonAsync(getInfoFilePath());
|
|
};
|
|
|
|
var ensureFileInfoContents = function ensureFileInfoContents() {
|
|
return getInfoFileContents().catch(function () {
|
|
debug('could not read info file');
|
|
return {};
|
|
});
|
|
};
|
|
|
|
var writeInfoFileContents = function writeInfoFileContents(contents) {
|
|
return fs.outputJsonAsync(getInfoFilePath(), contents, {
|
|
spaces: 2
|
|
});
|
|
};
|
|
|
|
module.exports = {
|
|
clearVersionState: clearVersionState,
|
|
writeInfoFileContents: writeInfoFileContents,
|
|
ensureInstallationDir: ensureInstallationDir,
|
|
ensureFileInfoContents: ensureFileInfoContents,
|
|
getInfoFilePath: getInfoFilePath,
|
|
getVerifiedVersion: getVerifiedVersion,
|
|
getInstallationDir: getInstallationDir,
|
|
getInstalledVersion: getInstalledVersion,
|
|
getPathToUserExecutableDir: getPathToUserExecutableDir,
|
|
getPathToExecutable: getPathToExecutable,
|
|
writeInstalledVersion: writeInstalledVersion
|
|
};
|