UNPKG

appium-doctor

Version:

Test environment for fitness to run Appium

157 lines (120 loc) 12.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.authorizeIos = void 0; exports.configureBinaryLog = configureBinaryLog; exports.getNpmPackageInfo = getNpmPackageInfo; exports.inquirer = void 0; exports.nok = nok; exports.nokOptional = nokOptional; exports.ok = ok; exports.okOptional = okOptional; exports.pkgRoot = void 0; exports.resolveExecutablePath = resolveExecutablePath; require("source-map-support/register"); var _bluebird = _interopRequireDefault(require("bluebird")); var _path = _interopRequireDefault(require("path")); var _inquirer2 = _interopRequireDefault(require("inquirer")); var _logger = _interopRequireDefault(require("../lib/logger")); var _authorizeIos = _interopRequireDefault(require("authorize-ios")); var _appiumSupport = require("appium-support"); var _teen_process = require("teen_process"); var _lodash = require("lodash"); const authorizeIos = _authorizeIos.default; exports.authorizeIos = authorizeIos; const pkgRoot = process.env.NO_PRECOMPILE ? _path.default.resolve(__dirname, '..') : _path.default.resolve(__dirname, '..', '..'); exports.pkgRoot = pkgRoot; function ok(message) { return { ok: true, optional: false, message }; } function nok(message) { return { ok: false, optional: false, message }; } function okOptional(message) { return { ok: true, optional: true, message }; } function nokOptional(message) { return { ok: false, optional: true, message }; } const inquirer = { prompt: _bluebird.default.promisify(function (question, cb) { _inquirer2.default.prompt(question, function (resp) { cb(null, resp); }); }) }; exports.inquirer = inquirer; function configureBinaryLog(opts) { let actualLog = _logger.default.unwrap().log; _logger.default.unwrap().log = function (level, prefix, msg) { let l = this.levels[level]; if (l < this.levels[this.level]) return; actualLog(level, prefix, msg); if ((0, _lodash.isFunction)(opts.onLogMessage)) { opts.onLogMessage(level, prefix, msg); } }; _logger.default.level = opts.debug ? 'debug' : 'info'; } async function resolveExecutablePath(cmd) { let executablePath; try { executablePath = await _appiumSupport.fs.which(cmd); if (executablePath && (await _appiumSupport.fs.exists(executablePath))) { return executablePath; } } catch (err) { if (/not found/gi.test(err.message)) { _logger.default.debug(err); } else { _logger.default.warn(err); } } _logger.default.debug(`No executable path of '${cmd}'.`); if (executablePath) { _logger.default.debug(`Does '${executablePath}' exist?`); } return null; } async function getNpmPackageInfo(packageName) { const npmPath = await resolveExecutablePath(`npm${_appiumSupport.system.isWindows() ? `.cmd` : ''}`); if (!npmPath) { return nokOptional(`'npm' binary not found in PATH: ${process.env.PATH}`); } let pJson = {}; try { const { stdout } = await (0, _teen_process.exec)(npmPath, ['list', '-g', '-l', '-j', packageName]); pJson = JSON.parse(stdout); } catch (err) { _logger.default.debug(err); return null; } if (pJson.dependencies && pJson.dependencies[packageName]) { return { version: pJson.dependencies[packageName].version, path: pJson.path }; } return null; }require('source-map-support').install(); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsiYXV0aG9yaXplSW9zIiwiYXV0aG9yaXplIiwicGtnUm9vdCIsInByb2Nlc3MiLCJlbnYiLCJOT19QUkVDT01QSUxFIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJvayIsIm1lc3NhZ2UiLCJvcHRpb25hbCIsIm5vayIsIm9rT3B0aW9uYWwiLCJub2tPcHRpb25hbCIsImlucXVpcmVyIiwicHJvbXB0IiwiQiIsInByb21pc2lmeSIsInF1ZXN0aW9uIiwiY2IiLCJfaW5xdWlyZXIiLCJyZXNwIiwiY29uZmlndXJlQmluYXJ5TG9nIiwib3B0cyIsImFjdHVhbExvZyIsImxvZyIsInVud3JhcCIsImxldmVsIiwicHJlZml4IiwibXNnIiwibCIsImxldmVscyIsImlzRnVuY3Rpb24iLCJvbkxvZ01lc3NhZ2UiLCJkZWJ1ZyIsInJlc29sdmVFeGVjdXRhYmxlUGF0aCIsImNtZCIsImV4ZWN1dGFibGVQYXRoIiwiZnMiLCJ3aGljaCIsImV4aXN0cyIsImVyciIsInRlc3QiLCJ3YXJuIiwiZ2V0TnBtUGFja2FnZUluZm8iLCJwYWNrYWdlTmFtZSIsIm5wbVBhdGgiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJQQVRIIiwicEpzb24iLCJzdGRvdXQiLCJleGVjIiwiSlNPTiIsInBhcnNlIiwiZGVwZW5kZW5jaWVzIiwidmVyc2lvbiJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfaW5xdWlyZXIgZnJvbSAnaW5xdWlyZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9saWIvbG9nZ2VyJztcbmltcG9ydCBhdXRob3JpemUgZnJvbSAnYXV0aG9yaXplLWlvcyc7XG5pbXBvcnQgeyBmcywgc3lzdGVtIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnbG9kYXNoJztcblxuLy8gcmVuYW1lIHRvIG1ha2UgbW9yZSBzZW5zZVxuY29uc3QgYXV0aG9yaXplSW9zID0gYXV0aG9yaXplO1xuXG5jb25zdCBwa2dSb290ID0gcHJvY2Vzcy5lbnYuTk9fUFJFQ09NUElMRSA/XG4gIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicpIDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJyk7XG5cbmZ1bmN0aW9uIG9rIChtZXNzYWdlKSB7XG4gIHJldHVybiB7b2s6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgbWVzc2FnZX07XG59XG5mdW5jdGlvbiBub2sgKG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtvazogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgbWVzc2FnZX07XG59XG5mdW5jdGlvbiBva09wdGlvbmFsIChtZXNzYWdlKSB7XG4gIHJldHVybiB7b2s6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCBtZXNzYWdlfTtcbn1cbmZ1bmN0aW9uIG5va09wdGlvbmFsIChtZXNzYWdlKSB7XG4gIHJldHVybiB7b2s6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgbWVzc2FnZX07XG59XG5cbmNvbnN0IGlucXVpcmVyID0ge1xuICBwcm9tcHQ6IEIucHJvbWlzaWZ5KGZ1bmN0aW9uIChxdWVzdGlvbiwgY2IpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICBfaW5xdWlyZXIucHJvbXB0KHF1ZXN0aW9uLCBmdW5jdGlvbiAocmVzcCkgeyBjYihudWxsLCByZXNwKTsgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gIH0pXG59O1xuXG5mdW5jdGlvbiBjb25maWd1cmVCaW5hcnlMb2cgKG9wdHMpIHtcbiAgbGV0IGFjdHVhbExvZyA9IGxvZy51bndyYXAoKS5sb2c7XG4gIGxvZy51bndyYXAoKS5sb2cgPSBmdW5jdGlvbiAobGV2ZWwsIHByZWZpeCwgbXNnKSB7XG4gICAgbGV0IGwgPSB0aGlzLmxldmVsc1tsZXZlbF07XG4gICAgaWYgKGwgPCB0aGlzLmxldmVsc1t0aGlzLmxldmVsXSkgcmV0dXJuOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgYWN0dWFsTG9nKGxldmVsLCBwcmVmaXgsIG1zZyk7XG5cbiAgICBpZiAoaXNGdW5jdGlvbihvcHRzLm9uTG9nTWVzc2FnZSkpIHtcbiAgICAgIG9wdHMub25Mb2dNZXNzYWdlKGxldmVsLCBwcmVmaXgsIG1zZyk7XG4gICAgfVxuICB9O1xuICBsb2cubGV2ZWwgPSBvcHRzLmRlYnVnID8gJ2RlYnVnJyA6ICdpbmZvJztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYW4gZXhlY3V0YWJsZSBwYXRoIG9mIGNtZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbWQgU3RhbmRhcmQgb3V0cHV0IGJ5IGNvbW1hbmRcbiAqIEByZXR1cm4gez9zdHJpbmd9IFRoZSBmdWxsIHBhdGggb2YgY21kLiBgbnVsbGAgaWYgdGhlIGNtZCBpcyBub3QgZm91bmQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVFeGVjdXRhYmxlUGF0aCAoY21kKSB7XG4gIGxldCBleGVjdXRhYmxlUGF0aDtcbiAgdHJ5IHtcbiAgICBleGVjdXRhYmxlUGF0aCA9IGF3YWl0IGZzLndoaWNoKGNtZCk7XG4gICAgaWYgKGV4ZWN1dGFibGVQYXRoICYmIGF3YWl0IGZzLmV4aXN0cyhleGVjdXRhYmxlUGF0aCkpIHtcbiAgICAgIHJldHVybiBleGVjdXRhYmxlUGF0aDtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICgoL25vdCBmb3VuZC9naSkudGVzdChlcnIubWVzc2FnZSkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cud2FybihlcnIpO1xuICAgIH1cbiAgfVxuICBsb2cuZGVidWcoYE5vIGV4ZWN1dGFibGUgcGF0aCBvZiAnJHtjbWR9Jy5gKTtcbiAgaWYgKGV4ZWN1dGFibGVQYXRoKSB7XG4gICAgbG9nLmRlYnVnKGBEb2VzICcke2V4ZWN1dGFibGVQYXRofScgZXhpc3Q/YCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTnBtUGFja2FnZUluZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gdmVyc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggLSBBIHBhdGggdG8gbnBtIHJvb3RcbiAqL1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIGFuZCB2ZXJzaW9uIG9mIGdpdmVuIHBhY2thZ2UgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lIEEgcGFja2FnZSBuYW1lIHRvIGdldCBwYXRoIGFuZCB2ZXJzaW9uIGRhdGFcbiAqIEByZXR1cm4gez9OcG1QYWNrYWdlSW5mb31cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TnBtUGFja2FnZUluZm8gKHBhY2thZ2VOYW1lKSB7XG4gIGNvbnN0IG5wbVBhdGggPSBhd2FpdCByZXNvbHZlRXhlY3V0YWJsZVBhdGgoYG5wbSR7c3lzdGVtLmlzV2luZG93cygpID8gYC5jbWRgIDogJyd9YCk7XG4gIGlmICghbnBtUGF0aCkge1xuICAgIHJldHVybiBub2tPcHRpb25hbChgJ25wbScgYmluYXJ5IG5vdCBmb3VuZCBpbiBQQVRIOiAke3Byb2Nlc3MuZW52LlBBVEh9YCk7XG4gIH1cblxuICBsZXQgcEpzb24gPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMobnBtUGF0aCwgWydsaXN0JywgJy1nJywgJy1sJywgJy1qJywgcGFja2FnZU5hbWVdKTtcbiAgICBwSnNvbiA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmRlYnVnKGVycik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAocEpzb24uZGVwZW5kZW5jaWVzICYmIHBKc29uLmRlcGVuZGVuY2llc1twYWNrYWdlTmFtZV0pIHtcbiAgICByZXR1cm4ge3ZlcnNpb246IHBKc29uLmRlcGVuZGVuY2llc1twYWNrYWdlTmFtZV0udmVyc2lvbiwgcGF0aDogcEpzb24ucGF0aH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IHsgcGtnUm9vdCwgb2ssIG5vaywgb2tPcHRpb25hbCwgbm9rT3B0aW9uYWwsIGlucXVpcmVyLCBjb25maWd1cmVCaW5hcnlMb2csXG4gIGF1dGhvcml6ZUlvcywgcmVzb2x2ZUV4ZWN1dGFibGVQYXRoLCBnZXROcG1QYWNrYWdlSW5mb307XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsWUFBWSxHQUFHQyxxQkFBckI7O0FBRUEsTUFBTUMsT0FBTyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsYUFBWixHQUNkQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixDQURjLEdBQ2tCRixhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixDQURsQzs7O0FBR0EsU0FBU0MsRUFBVCxDQUFhQyxPQUFiLEVBQXNCO0VBQ3BCLE9BQU87SUFBQ0QsRUFBRSxFQUFFLElBQUw7SUFBV0UsUUFBUSxFQUFFLEtBQXJCO0lBQTRCRDtFQUE1QixDQUFQO0FBQ0Q7O0FBQ0QsU0FBU0UsR0FBVCxDQUFjRixPQUFkLEVBQXVCO0VBQ3JCLE9BQU87SUFBQ0QsRUFBRSxFQUFFLEtBQUw7SUFBWUUsUUFBUSxFQUFFLEtBQXRCO0lBQTZCRDtFQUE3QixDQUFQO0FBQ0Q7O0FBQ0QsU0FBU0csVUFBVCxDQUFxQkgsT0FBckIsRUFBOEI7RUFDNUIsT0FBTztJQUFDRCxFQUFF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