UNPKG

appium-doctor

Version:

Test environment for fitness to run Appium

166 lines (123 loc) 10.8 kB
'use strict'; var _get = require('babel-runtime/helpers/get')['default']; var _inherits = require('babel-runtime/helpers/inherits')['default']; var _createClass = require('babel-runtime/helpers/create-class')['default']; var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default']; var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _doctor = require('./doctor'); var _utils = require('./utils'); var _appiumSupport = require('appium-support'); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _env = require('./env'); var _env2 = _interopRequireDefault(_env); var checks = []; checks.push(new _env2['default']('ANDROID_HOME')); checks.push(new _env2['default']('JAVA_HOME')); // Check that the PATH includes the jdk's bin directory var JavaOnPathCheck = (function (_DoctorCheck) { _inherits(JavaOnPathCheck, _DoctorCheck); function JavaOnPathCheck() { _classCallCheck(this, JavaOnPathCheck); _get(Object.getPrototypeOf(JavaOnPathCheck.prototype), 'constructor', this).apply(this, arguments); } // Check tools _createClass(JavaOnPathCheck, [{ key: 'diagnose', value: function diagnose() { var javaHomeBin; return _regeneratorRuntime.async(function diagnose$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: if (!process.env.JAVA_HOME) { context$2$0.next = 4; break; } javaHomeBin = _path2['default'].resolve(process.env.JAVA_HOME, 'bin'); if (!(process.env.PATH.indexOf(javaHomeBin) + 1)) { context$2$0.next = 4; break; } return context$2$0.abrupt('return', (0, _utils.ok)('Bin directory of $JAVA_HOME is set')); case 4: return context$2$0.abrupt('return', (0, _utils.nok)('Bin directory for $JAVA_HOME is not set')); case 5: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'fix', value: function fix() { return 'Add \'$JAVA_HOME' + _path2['default'].sep + 'bin\' to your PATH environment'; } }]); return JavaOnPathCheck; })(_doctor.DoctorCheck); var AndroidToolCheck = (function (_DoctorCheck2) { _inherits(AndroidToolCheck, _DoctorCheck2); function AndroidToolCheck(toolName, toolPath) { _classCallCheck(this, AndroidToolCheck); _get(Object.getPrototypeOf(AndroidToolCheck.prototype), 'constructor', this).call(this); this.toolName = toolName; this.toolPath = toolPath; } _createClass(AndroidToolCheck, [{ key: 'diagnose', value: function diagnose() { var fullPath; return _regeneratorRuntime.async(function diagnose$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: if (!(typeof process.env.ANDROID_HOME === 'undefined')) { context$2$0.next = 2; break; } return context$2$0.abrupt('return', (0, _utils.nok)(this.toolName + ' could not be found because ANDROID_HOME is NOT set!')); case 2: fullPath = _path2['default'].resolve(process.env.ANDROID_HOME, this.toolPath); context$2$0.next = 5; return _regeneratorRuntime.awrap(_appiumSupport.fs.exists(fullPath)); case 5: if (!context$2$0.sent) { context$2$0.next = 9; break; } context$2$0.t0 = (0, _utils.ok)(this.toolName + ' exists at: ' + fullPath); context$2$0.next = 10; break; case 9: context$2$0.t0 = (0, _utils.nok)(this.toolName + ' could NOT be found at \'' + fullPath + '\'!'); case 10: return context$2$0.abrupt('return', context$2$0.t0); case 11: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'fix', value: function fix() { if (typeof process.env.ANDROID_HOME === 'undefined') { return 'Manually configure ANDROID_HOME and run appium-doctor again.'; } return 'Manually install ' + this.toolName + ' and add it to PATH.'; } }]); return AndroidToolCheck; })(_doctor.DoctorCheck); checks.push(new AndroidToolCheck('adb', _path2['default'].join("platform-tools", _appiumSupport.system.isWindows() ? 'adb.exe' : 'adb'))); checks.push(new AndroidToolCheck('android', _path2['default'].join("tools", _appiumSupport.system.isWindows() ? 'android.bat' : 'android'))); checks.push(new AndroidToolCheck('emulator', _path2['default'].join("tools", _appiumSupport.system.isWindows() ? 'emulator.exe' : 'emulator'))); checks.push(new JavaOnPathCheck()); exports.EnvVarAndPathCheck = _env2['default']; exports.AndroidToolCheck = AndroidToolCheck; exports.JavaOnPathCheck = JavaOnPathCheck; exports['default'] = checks; //# sourceMappingURL=data:application/json;charset=utf8;base64,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TUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7O1FBRTFCLGtCQUFrQjtRQUFFLGdCQUFnQixHQUFoQixnQkFBZ0I7UUFBRSxlQUFlLEdBQWYsZUFBZTtxQkFDL0MsTUFBTSIsImZpbGUiOiJsaWIvYW5kcm9pZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3RvckNoZWNrIH0gZnJvbSAnLi9kb2N0b3InO1xuaW1wb3J0IHsgb2ssIG5vayB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZnMsIHN5c3RlbSB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEVudlZhckFuZFBhdGhDaGVjayBmcm9tICcuL2Vudic7XG5cblxubGV0IGNoZWNrcyA9IFtdO1xuXG5cbmNoZWNrcy5wdXNoKG5ldyBFbnZWYXJBbmRQYXRoQ2hlY2soJ0FORFJPSURfSE9NRScpKTtcbmNoZWNrcy5wdXNoKG5ldyBFbnZWYXJBbmRQYXRoQ2hlY2soJ0pBVkFfSE9NRScpKTtcblxuLy8gQ2hlY2sgdGhhdCB0aGUgUEFUSCBpbmNsdWRlcyB0aGUgamRrJ3MgYmluIGRpcmVjdG9yeVxuY2xhc3MgSmF2YU9uUGF0aENoZWNrIGV4dGVuZHMgRG9jdG9yQ2hlY2sge1xuICBhc3luYyBkaWFnbm9zZSAoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpBVkFfSE9NRSkge1xuICAgICAgbGV0IGphdmFIb21lQmluID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkpBVkFfSE9NRSwgJ2JpbicpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52LlBBVEguaW5kZXhPZihqYXZhSG9tZUJpbikgKyAxKSB7XG4gICAgICAgIHJldHVybiBvaygnQmluIGRpcmVjdG9yeSBvZiAkSkFWQV9IT01FIGlzIHNldCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9rKCdCaW4gZGlyZWN0b3J5IGZvciAkSkFWQV9IT01FIGlzIG5vdCBzZXQnKTtcbiAgfVxuXG4gIGZpeCAoKSB7XG4gICAgcmV0dXJuIGBBZGQgJyRKQVZBX0hPTUUke3BhdGguc2VwfWJpbicgdG8geW91ciBQQVRIIGVudmlyb25tZW50YDtcbiAgfVxufVxuXG4vLyBDaGVjayB0b29sc1xuY2xhc3MgQW5kcm9pZFRvb2xDaGVjayBleHRlbmRzIERvY3RvckNoZWNrIHtcbiAgY29uc3RydWN0b3IgKHRvb2xOYW1lLCB0b29sUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50b29sTmFtZSA9IHRvb2xOYW1lO1xuICAgIHRoaXMudG9vbFBhdGggPSB0b29sUGF0aDtcbiAgfVxuXG4gIGFzeW5jIGRpYWdub3NlICgpIHtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MuZW52LkFORFJPSURfSE9NRSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBub2soYCR7dGhpcy50b29sTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGJlY2F1c2UgQU5EUk9JRF9IT01FIGlzIE5PVCBzZXQhYCk7XG4gICAgfVxuICAgIGxldCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5BTkRST0lEX0hPTUUsIHRoaXMudG9vbFBhdGgpO1xuICAgIHJldHVybiBhd2FpdCBmcy5leGlzdHMoZnVsbFBhdGgpID8gb2soYCR7dGhpcy50b29sTmFtZX0gZXhpc3RzIGF0OiAke2Z1bGxQYXRofWApIDpcbiAgICAgIG5vayhgJHt0aGlzLnRvb2xOYW1lfSBjb3VsZCBOT1QgYmUgZm91bmQgYXQgXFwnJHtmdWxsUGF0aH1cXCchYCk7XG4gIH1cblxuICBmaXggKCkge1xuICAgIGlmICh0eXBlb2YgcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuICdNYW51YWxseSBjb25maWd1cmUgQU5EUk9JRF9IT01FIGFuZCBydW4gYXBwaXVtLWRvY3RvciBhZ2Fpbi4nO1xuICAgIH1cbiAgICByZXR1cm4gYE1hbnVhbGx5IGluc3RhbGwgJHt0aGlzLnRvb2xOYW1lfSBhbmQgYWRkIGl0IHRvIFBBVEguYDtcbiAgfVxufVxuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2FkYicsXG4gIHBhdGguam9pbihcInBsYXRmb3JtLXRvb2xzXCIsIHN5c3RlbS5pc1dpbmRvd3MoKSA/ICdhZGIuZXhlJyA6ICdhZGInKSkpO1xuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2FuZHJvaWQnLFxuICBwYXRoLmpvaW4oXCJ0b29sc1wiLCBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnYW5kcm9pZC5iYXQnIDogJ2FuZHJvaWQnKSkpO1xuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2VtdWxhdG9yJyxcbiAgcGF0aC5qb2luKFwidG9vbHNcIiwgc3lzdGVtLmlzV2luZG93cygpID8gJ2VtdWxhdG9yLmV4ZScgOiAnZW11bGF0b3InKSkpO1xuY2hlY2tzLnB1c2gobmV3IEphdmFPblBhdGhDaGVjaygpKTtcblxuZXhwb3J0IHsgRW52VmFyQW5kUGF0aENoZWNrLCBBbmRyb2lkVG9vbENoZWNrLCBKYXZhT25QYXRoQ2hlY2sgfTtcbmV4cG9ydCBkZWZhdWx0IGNoZWNrcztcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==