Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More

appium-xcode

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

appium-xcode - npm Package Compare versions

Comparing version 1.0.2 to 2.0.0

"use strict";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0FBQUEiLCJzb3VyY2VSb290IjoiL1VzZXJzL2pvbmFoc3MvV29ya3NwYWNlL2FwcGl1bS14Y29kZS8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgc2hvdWxkIHJlYWQ6XG4vLyBleHBvcnQgKiBmcm9tICdsaWIveGNvZGUuanMnXG5cbi8vIGJ1dCB0aGlzIHN5bnRheCBpcyBicm9rZW4gaW4gdHJhY2V1cjogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS90cmFjZXVyLWNvbXBpbGVyL2lzc3Vlcy8xMDQyXG4iXX0=
//# sourceURL=index.js
// This file should read:
// export * from 'lib/xcode.js'
// but this syntax is broken in traceur: https://github.com/google/traceur-compiler/issues/1042
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbXX0=

@@ -1,537 +0,396 @@

"use strict";
Object.defineProperties(exports, {
getPath: {get: function() {
return getPath;
}},
getVersion: {get: function() {
return getVersion;
}},
getAutomationTraceTemplatePath: {get: function() {
return getAutomationTraceTemplatePath;
}},
getMaxIOSSDK: {get: function() {
return getMaxIOSSDK;
}},
getAutomationTraceTemplatePathWithoutRetry: {get: function() {
return getAutomationTraceTemplatePathWithoutRetry;
}},
getMaxIOSSDKWithoutRetry: {get: function() {
return getMaxIOSSDKWithoutRetry;
}},
clearInternalCache: {get: function() {
return clearInternalCache;
}},
__esModule: {value: true}
'use strict';
var _slicedToArray = require('babel-runtime/helpers/sliced-to-array')['default'];
var _core = require('babel-runtime/core-js')['default'];
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireWildcard = require('babel-runtime/helpers/interop-require-wildcard')['default'];
_core.Object.defineProperty(exports, '__esModule', {
value: true
});
var $__npmlog__,
$__appium_45_support__,
$__fs__,
$__denodeify__,
$__path__,
$__asyncbox__,
$__lodash__;
var npmlog = ($__npmlog__ = require("npmlog"), $__npmlog__ && $__npmlog__.__esModule && $__npmlog__ || {default: $__npmlog__}).default;
var support = ($__appium_45_support__ = require("appium-support"), $__appium_45_support__ && $__appium_45_support__.__esModule && $__appium_45_support__ || {default: $__appium_45_support__}).default;
var fs = ($__fs__ = require("fs"), $__fs__ && $__fs__.__esModule && $__fs__ || {default: $__fs__}).default;
var denodeify = ($__denodeify__ = require("denodeify"), $__denodeify__ && $__denodeify__.__esModule && $__denodeify__ || {default: $__denodeify__}).default;
var path = ($__path__ = require("path"), $__path__ && $__path__.__esModule && $__path__ || {default: $__path__}).default;
var retry = ($__asyncbox__ = require("asyncbox"), $__asyncbox__ && $__asyncbox__.__esModule && $__asyncbox__ || {default: $__asyncbox__}).retry;
var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
var exec = support.core.exec;
var util = support.util;
var fileExists = support.util.fileExists;
var escapeSpace = support.util.escapeSpace;
var readSymlink = denodeify(fs.readlink);
var _npmlog = require('npmlog');
var _npmlog2 = _interopRequireWildcard(_npmlog);
var _support = require('appium-support');
var _support2 = _interopRequireWildcard(_support);
var _fs = require('fs');
var _fs2 = _interopRequireWildcard(_fs);
var _denodeify = require('denodeify');
var _denodeify2 = _interopRequireWildcard(_denodeify);
var _path = require('path');
var _path2 = _interopRequireWildcard(_path);
var _retry = require('asyncbox');
var _import = require('lodash');
var _import2 = _interopRequireWildcard(_import);
var exec = _support2['default'].core.exec;
var util = _support2['default'].util;
var fileExists = _support2['default'].util.fileExists;
var escapeSpace = _support2['default'].util.escapeSpace;
var readSymlink = _denodeify2['default'](_fs2['default'].readlink);
var env = process.env;
var XCODE_SELECT_TIMEOUT = 3000;
var XCODE_SUBDIR = "/Contents/Developer";
var XCODE_SUBDIR = '/Contents/Developer';
var DEFAULT_NUMBER_OF_RETRIES = 3;
var log = process.env.GLOBAL_NPMLOG ? global.log : npmlog;
var log = process.env.GLOBAL_NPMLOG ? global.log : _npmlog2['default'];
function hasExpectedSubDir(path) {
return path.substring(path.length - XCODE_SUBDIR.length) === XCODE_SUBDIR;
}
function getPathFromSymlink(failMessage) {
var symlinkPath,
legacySymlinkPath,
customPath,
mesg,
msg,
$__8,
$__9,
$__10,
$__11,
$__12,
$__13;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
log.warn(("Finding XcodePath by symlink because " + failMessage));
symlinkPath = "/var/db/xcode_select_link";
legacySymlinkPath = "/usr/share/xcode-select/xcode_dir_path";
$ctx.state = 34;
var symlinkPath, legacySymlinkPath, customPath, mesg, msg;
return _regeneratorRuntime.async(function getPathFromSymlink$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
// Node's invocation of xcode-select sometimes flakes and returns an empty string.
// Not clear why. As a workaround, Appium can reliably deduce the version in use by checking
// the locations xcode-select uses to store the selected version's path. This should be 100%
// reliable so long as the link locations remain the same. However, since we're relying on
// hardcoded paths, this approach will break the next time Apple changes the symlink location.
log.warn('Finding XcodePath by symlink because ' + failMessage);
symlinkPath = '/var/db/xcode_select_link';
legacySymlinkPath = '/usr/share/xcode-select/xcode_dir_path';
if (!util.hasContent(env.DEVELOPER_DIR)) {
context$1$0.next = 14;
break;
case 34:
$ctx.state = (util.hasContent(env.DEVELOPER_DIR)) ? 12 : 8;
}
customPath = hasExpectedSubDir(env.DEVELOPER_DIR) ? env.DEVELOPER_DIR : env.DEVELOPER_DIR + XCODE_SUBDIR;
context$1$0.next = 7;
return fileExists(customPath);
case 7:
if (!context$1$0.sent) {
context$1$0.next = 11;
break;
case 12:
customPath = hasExpectedSubDir(env.DEVELOPER_DIR) ? env.DEVELOPER_DIR : env.DEVELOPER_DIR + XCODE_SUBDIR;
$ctx.state = 13;
}
return context$1$0.abrupt('return', customPath);
case 11:
mesg = 'Could not find path to Xcode, environment variable ' + ('DEVELOPER_DIR set to: ' + env.DEVELOPER_DIR + ' ') + 'but no Xcode found';
log.warn(mesg);
throw new Error(mesg);
case 14:
context$1$0.next = 16;
return fileExists(symlinkPath);
case 16:
if (!context$1$0.sent) {
context$1$0.next = 18;
break;
case 13:
$__8 = fileExists(customPath);
$ctx.state = 5;
}
return context$1$0.abrupt('return', readSymlink(symlinkPath));
case 18:
context$1$0.next = 20;
return fileExists(legacySymlinkPath);
case 20:
if (!context$1$0.sent) {
context$1$0.next = 22;
break;
case 5:
Promise.resolve($__8).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
$__9 = $ctx.value;
$ctx.state = 2;
break;
case 2:
$ctx.state = ($__9) ? 6 : 9;
break;
case 6:
$ctx.returnValue = customPath;
$ctx.state = 7;
break;
case 7:
$ctx.state = -2;
break;
case 9:
mesg = "Could not find path to Xcode, environment variable " + ("DEVELOPER_DIR set to: " + env.DEVELOPER_DIR + " ") + "but no Xcode found";
log.warn(mesg);
throw new Error(mesg);
$ctx.state = 8;
break;
case 8:
$__10 = fileExists(symlinkPath);
$ctx.state = 19;
break;
case 19:
Promise.resolve($__10).then($ctx.createCallback(17), $ctx.errback);
return;
case 17:
$__11 = $ctx.value;
$ctx.state = 16;
break;
case 16:
$ctx.state = ($__11) ? 20 : 22;
break;
case 20:
$ctx.returnValue = readSymlink(symlinkPath);
$ctx.state = 21;
break;
case 21:
$ctx.state = -2;
break;
case 22:
$__12 = fileExists(legacySymlinkPath);
$ctx.state = 28;
break;
case 28:
Promise.resolve($__12).then($ctx.createCallback(26), $ctx.errback);
return;
case 26:
$__13 = $ctx.value;
$ctx.state = 25;
break;
case 25:
$ctx.state = ($__13) ? 29 : 31;
break;
case 29:
$ctx.returnValue = readSymlink(legacySymlinkPath);
$ctx.state = 30;
break;
case 30:
$ctx.state = -2;
break;
case 31:
msg = ("Could not find path to Xcode by symlinks located in " + symlinkPath + ", or " + legacySymlinkPath);
log.warn(msg);
throw new Error(msg);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}
return context$1$0.abrupt('return', readSymlink(legacySymlinkPath));
case 22:
msg = 'Could not find path to Xcode by symlinks located in ' + symlinkPath + ', or ' + legacySymlinkPath;
log.warn(msg);
throw new Error(msg);
case 25:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
function getPathFromXcodeSelect() {
var stdout,
xcodeFolderPath,
msg,
$__14,
$__15,
$__16,
$__17,
$__18;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
$__14 = exec('xcode-select --print-path', {
maxBuffer: 524288,
timeout: XCODE_SELECT_TIMEOUT
});
$ctx.state = 5;
var _ref, _ref2, stdout, xcodeFolderPath, msg;
return _regeneratorRuntime.async(function getPathFromXcodeSelect$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return exec('xcode-select --print-path', { maxBuffer: 524288, timeout: XCODE_SELECT_TIMEOUT });
case 2:
_ref = context$1$0.sent;
_ref2 = _slicedToArray(_ref, 1);
stdout = _ref2[0];
xcodeFolderPath = stdout.replace(new RegExp('/$'), '').trim();
if (util.hasContent(xcodeFolderPath)) {
context$1$0.next = 8;
break;
case 5:
Promise.resolve($__14).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
$__15 = $ctx.value;
$ctx.state = 2;
}
throw new Error('xcode-select returned an empty string');
case 8:
context$1$0.next = 10;
return fileExists(xcodeFolderPath);
case 10:
if (!context$1$0.sent) {
context$1$0.next = 14;
break;
case 2:
$__16 = $__15[0];
stdout = $__16;
$ctx.state = 7;
break;
case 7:
xcodeFolderPath = stdout.replace(new RegExp("/$"), "").trim();
if (!util.hasContent(xcodeFolderPath)) {
throw new Error("xcode-select returned an empty string");
}
$ctx.state = 20;
break;
case 20:
$__17 = fileExists(xcodeFolderPath);
$ctx.state = 12;
break;
case 12:
Promise.resolve($__17).then($ctx.createCallback(10), $ctx.errback);
return;
case 10:
$__18 = $ctx.value;
$ctx.state = 9;
break;
case 9:
$ctx.state = ($__18) ? 13 : 16;
break;
case 13:
$ctx.returnValue = xcodeFolderPath;
$ctx.state = 14;
break;
case 14:
$ctx.state = -2;
break;
case 16:
msg = ("xcode-select could not find xcode. Path: " + xcodeFolderPath + " does not exist.");
log.error(msg);
throw new Error(msg);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}
return context$1$0.abrupt('return', xcodeFolderPath);
case 14:
msg = 'xcode-select could not find xcode. Path: ' + xcodeFolderPath + ' does not exist.';
log.error(msg);
throw new Error(msg);
case 17:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
var getPath = _.memoize(function() {
return getPathFromXcodeSelect().catch(getPathFromSymlink);
var getPath = _import2['default'].memoize(function () {
// first we try using xcode-select to find the path
// then we try using the symlinks that Apple has by default
return getPathFromXcodeSelect()['catch'](getPathFromSymlink);
});
function getVersionWithoutRetry() {
var xcodePath,
plistPath,
cmd,
stdout,
versionPattern,
match,
$__19,
$__20,
$__21,
$__22,
$__23;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(getPath()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
xcodePath = $ctx.value;
$ctx.state = 2;
var xcodePath, plistPath, cmd, _ref3, _ref32, stdout, versionPattern, match;
return _regeneratorRuntime.async(function getVersionWithoutRetry$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return getPath();
case 2:
xcodePath = context$1$0.sent;
plistPath = xcodePath.replace(XCODE_SUBDIR, '/Contents/Info.plist');
context$1$0.next = 6;
return fileExists(plistPath);
case 6:
if (context$1$0.sent) {
context$1$0.next = 8;
break;
case 2:
plistPath = xcodePath.replace(XCODE_SUBDIR, "/Contents/Info.plist");
$ctx.state = 23;
}
throw new Error('Could not get Xcode version. ' + plistPath + ' does not exist on disk.');
case 8:
cmd = '/usr/libexec/PlistBuddy -c \'Print CFBundleShortVersionString\' ' + escapeSpace(plistPath);
context$1$0.next = 11;
return exec(cmd, { maxBuffer: 524288, timeout: XCODE_SELECT_TIMEOUT });
case 11:
_ref3 = context$1$0.sent;
_ref32 = _slicedToArray(_ref3, 1);
stdout = _ref32[0];
versionPattern = /\d\.\d\.*\d*/;
match = stdout.match(versionPattern);
if (!(match === null || !util.hasContent(match[0]))) {
context$1$0.next = 18;
break;
case 23:
$__19 = fileExists(plistPath);
$ctx.state = 8;
break;
case 8:
Promise.resolve($__19).then($ctx.createCallback(6), $ctx.errback);
return;
case 6:
$__20 = $ctx.value;
$ctx.state = 5;
break;
case 5:
$ctx.state = (!$__20) ? 9 : 10;
break;
case 9:
throw new Error(("Could not get Xcode version. " + plistPath + " does not exist on disk."));
$ctx.state = 10;
break;
case 10:
cmd = ("/usr/libexec/PlistBuddy -c 'Print CFBundleShortVersionString' " + escapeSpace(plistPath));
$ctx.state = 25;
break;
case 25:
$__21 = exec(cmd, {
maxBuffer: 524288,
timeout: XCODE_SELECT_TIMEOUT
});
$ctx.state = 16;
break;
case 16:
Promise.resolve($__21).then($ctx.createCallback(14), $ctx.errback);
return;
case 14:
$__22 = $ctx.value;
$ctx.state = 13;
break;
case 13:
$__23 = $__22[0];
stdout = $__23;
$ctx.state = 18;
break;
case 18:
versionPattern = /\d\.\d\.*\d*/;
match = stdout.match(versionPattern);
if (match === null || !util.hasContent(match[0])) {
throw new Error(("Could not parse Xcode version. xcodebuild output was: " + stdout));
}
$ctx.state = 27;
break;
case 27:
$ctx.returnValue = match[0];
$ctx.state = 20;
break;
case 20:
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}
throw new Error('Could not parse Xcode version. xcodebuild output was: ' + stdout);
case 18:
return context$1$0.abrupt('return', match[0]);
case 19:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
var getVersion = _.memoize(function() {
var retries;
var $arguments = arguments;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
retries = $arguments[0] !== (void 0) ? $arguments[0] : DEFAULT_NUMBER_OF_RETRIES;
$ctx.state = 5;
break;
case 5:
$ctx.returnValue = retry(retries, getVersionWithoutRetry);
$ctx.state = 2;
break;
case 2:
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
var getVersion = _import2['default'].memoize(function () {
var retries = arguments[0] === undefined ? DEFAULT_NUMBER_OF_RETRIES : arguments[0];
return _retry.retry(retries, getVersionWithoutRetry);
});
function getAutomationTraceTemplatePathWithoutRetry() {
var xcodePath,
extensions,
pathPrefix,
pathSuffix,
automationTraceTemplatePaths,
msg,
$__24,
$__25,
$__26,
$__27,
$__28,
$__29;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(getPath()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
xcodePath = $ctx.value;
$ctx.state = 2;
var xcodePath, extensions, pathPrefix, pathSuffix, automationTraceTemplatePaths, msg;
return _regeneratorRuntime.async(function getAutomationTraceTemplatePathWithoutRetry$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return getPath();
case 2:
xcodePath = context$1$0.sent;
extensions = ['xrplugin', 'bundle'];
pathPrefix = _path2['default'].resolve(xcodePath, '../Applications/Instruments.app/Contents/PlugIns');
pathSuffix = 'Contents/Resources/Automation.tracetemplate';
automationTraceTemplatePaths = [_path2['default'].resolve(pathPrefix, 'AutomationInstrument.' + extensions[0], pathSuffix), _path2['default'].resolve(pathPrefix, 'AutomationInstrument.' + extensions[1], pathSuffix)];
context$1$0.next = 9;
return fileExists(automationTraceTemplatePaths[0]);
case 9:
if (!context$1$0.sent) {
context$1$0.next = 11;
break;
case 2:
extensions = ['xrplugin', 'bundle'];
pathPrefix = path.resolve(xcodePath, "../Applications/Instruments.app/Contents/PlugIns");
pathSuffix = "Contents/Resources/Automation.tracetemplate";
automationTraceTemplatePaths = [path.resolve(pathPrefix, "AutomationInstrument." + extensions[0], pathSuffix), path.resolve(pathPrefix, "AutomationInstrument." + extensions[1], pathSuffix)];
$ctx.state = 23;
}
return context$1$0.abrupt('return', automationTraceTemplatePaths[0]);
case 11:
context$1$0.next = 13;
return fileExists(automationTraceTemplatePaths[1]);
case 13:
if (!context$1$0.sent) {
context$1$0.next = 15;
break;
case 23:
$__24 = automationTraceTemplatePaths[0];
$__25 = fileExists($__24);
$ctx.state = 8;
break;
case 8:
Promise.resolve($__25).then($ctx.createCallback(6), $ctx.errback);
return;
case 6:
$__26 = $ctx.value;
$ctx.state = 5;
break;
case 5:
$ctx.state = ($__26) ? 9 : 11;
break;
case 9:
$ctx.returnValue = automationTraceTemplatePaths[0];
$ctx.state = 10;
break;
case 10:
$ctx.state = -2;
break;
case 11:
$__27 = automationTraceTemplatePaths[1];
$__28 = fileExists($__27);
$ctx.state = 17;
break;
case 17:
Promise.resolve($__28).then($ctx.createCallback(15), $ctx.errback);
return;
case 15:
$__29 = $ctx.value;
$ctx.state = 14;
break;
case 14:
$ctx.state = ($__29) ? 18 : 20;
break;
case 18:
$ctx.returnValue = automationTraceTemplatePaths[1];
$ctx.state = 19;
break;
case 19:
$ctx.state = -2;
break;
case 20:
msg = "Could not find Automation.tracetemplate in any of the following" + ("locations " + automationTraceTemplatePaths.toString());
log.error(msg);
throw new Error(msg);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}
return context$1$0.abrupt('return', automationTraceTemplatePaths[1]);
case 15:
msg = 'Could not find Automation.tracetemplate in any of the following' + ('locations ' + automationTraceTemplatePaths.toString());
log.error(msg);
throw new Error(msg);
case 18:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
var getAutomationTraceTemplatePath = _.memoize(function() {
var retries;
var $arguments = arguments;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
retries = $arguments[0] !== (void 0) ? $arguments[0] : DEFAULT_NUMBER_OF_RETRIES;
$ctx.state = 5;
break;
case 5:
$ctx.returnValue = retry(retries, getAutomationTraceTemplatePathWithoutRetry);
$ctx.state = 2;
break;
case 2:
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
var getAutomationTraceTemplatePath = _import2['default'].memoize(function () {
var retries = arguments[0] === undefined ? DEFAULT_NUMBER_OF_RETRIES : arguments[0];
return _retry.retry(retries, getAutomationTraceTemplatePathWithoutRetry);
});
// TODO remove this function. should really just be using 'getVersion()' everywhere.
// This was added for tech-debt backwards compatibility
function getMaxIOSSDKWithoutRetry() {
var version,
cmd,
stdout,
sdkVersion,
match,
$__30,
$__31,
$__32;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(getVersion()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
version = $ctx.value;
$ctx.state = 2;
var version, cmd, _ref4, _ref42, stdout, sdkVersion, match;
return _regeneratorRuntime.async(function getMaxIOSSDKWithoutRetry$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return getVersion();
case 2:
version = context$1$0.sent;
if (!(version === '4')) {
context$1$0.next = 5;
break;
case 2:
$ctx.state = (version === '4') ? 4 : 6;
}
return context$1$0.abrupt('return', '6.1');
case 5:
cmd = 'xcrun --sdk iphonesimulator --show-sdk-version';
context$1$0.next = 8;
return exec(cmd, { maxBuffer: 524288, timeout: XCODE_SELECT_TIMEOUT });
case 8:
_ref4 = context$1$0.sent;
_ref42 = _slicedToArray(_ref4, 1);
stdout = _ref42[0];
sdkVersion = stdout.trim();
match = /\d.\d/.exec(stdout);
if (match) {
context$1$0.next = 15;
break;
case 4:
$ctx.returnValue = '6.1';
$ctx.state = 5;
break;
case 5:
$ctx.state = -2;
break;
case 6:
cmd = "xcrun --sdk iphonesimulator --show-sdk-version";
$ctx.state = 19;
break;
case 19:
$__30 = exec(cmd, {
maxBuffer: 524288,
timeout: XCODE_SELECT_TIMEOUT
});
$ctx.state = 12;
break;
case 12:
Promise.resolve($__30).then($ctx.createCallback(10), $ctx.errback);
return;
case 10:
$__31 = $ctx.value;
$ctx.state = 9;
break;
case 9:
$__32 = $__31[0];
stdout = $__32;
$ctx.state = 14;
break;
case 14:
sdkVersion = stdout.trim();
match = /\d.\d/.exec(stdout);
if (!match) {
throw new Error(("xcrun returned a non-numeric iOS SDK version: " + sdkVersion));
}
$ctx.state = 21;
break;
case 21:
$ctx.returnValue = sdkVersion;
$ctx.state = 16;
break;
case 16:
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}
throw new Error('xcrun returned a non-numeric iOS SDK version: ' + sdkVersion);
case 15:
return context$1$0.abrupt('return', sdkVersion);
case 16:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
var getMaxIOSSDK = _.memoize(function() {
var retries = arguments[0] !== (void 0) ? arguments[0] : DEFAULT_NUMBER_OF_RETRIES;
return retry(retries, getMaxIOSSDKWithoutRetry);
var getMaxIOSSDK = _import2['default'].memoize(function () {
var retries = arguments[0] === undefined ? DEFAULT_NUMBER_OF_RETRIES : arguments[0];
return _retry.retry(retries, getMaxIOSSDKWithoutRetry);
});
function clearInternalCache() {
// memoized functions
var memoized = [getPath, getVersion, getAutomationTraceTemplatePath, getMaxIOSSDK];
memoized.forEach((function(f) {
memoized.forEach(function (f) {
if (f.cache) {
f.cache = new _.memoize.Cache();
f.cache = new _import2['default'].memoize.Cache();
}
}));
});
}
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGNvZGUuanMiLCJzb3VyY2VzIjpbInhjb2RlLmpzIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzciLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvNSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8zIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvNiIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8yIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzE1IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzgiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTQiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTEiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvOSIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xMCIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xMyIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBLEtBQUssaUJBQWlCLEFBQUMsQ0FBQyxPQUFNO1NDQTlCLEVBQUMsR0FBRSxZQ0FxQjtBQUFFLG9CQUF3QjtJQUFFLEFEQTlCLENBQUM7WUFBdkIsRUFBQyxHQUFFLFlDQXFCO0FBQUUsdUJBQXdCO0lBQUUsQURBOUIsQ0FBQztnQ0FBdkIsRUFBQyxHQUFFLFlDQXFCO0FBQUUsMkNBQXdCO0lBQUUsQURBOUIsQ0FBQztjQUF2QixFQUFDLEdBQUUsWUNBcUI7QUFBRSx5QkFBd0I7SUFBRSxBREE5QixDQUFDOzRDQUF2QixF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LEVBQUEsQ0FBQSxZQUFXLEVBQUksQ0FBQSxDQUFBLFFBQVEsQUFBQyxDQUM1QixTQUFVLEFBQWtDLENBQUc7SUFBckMsUUFBTSw2Q0FBSSwwQkFBd0I7QUFDMUMsT0FBTyxDQUFBLEtBQUksQUFBQyxDQUFDLE9BQU0sQ0FBRyx5QkFBdUIsQ0FBQyxDQUFDO0FBQ2pELENBQ0YsQ0FBQztBQUVELE9BQVMsbUJBQWlCLENBQUUsQUFBQztBQUczQixBQUFNLElBQUEsQ0FBQSxRQUFPLEVBQUksRUFBQyxPQUFNLENBQUcsV0FBUyxDQUFHLCtCQUE2QixDQUNsRCxhQUFXLENBQUMsQ0FBQztBQUUvQixTQUFPLFFBQVEsQUFBQyxFQUFDLFNBQUMsQ0FBQSxDQUFNO0FBQ3RCLE9BQUksQ0FBQSxNQUFNLENBQUc7QUFDWCxNQUFBLE1BQU0sRUFBSSxJQUFJLENBQUEsQ0FBQSxRQUFRLE1BQU0sQUFBQyxFQUFDLENBQUM7SUFDakM7QUFBQSxFQUNGLEVBQUMsQ0FBQztBQUdKOztBQUtBIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9qb25haHNzL1dvcmtzcGFjZS9hcHBpdW0teGNvZGUvbGliLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBucG1sb2cgZnJvbSAnbnBtbG9nJztcbmltcG9ydCBzdXBwb3J0IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgZGVub2RlaWZ5IGZyb20gJ2Rlbm9kZWlmeSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgZXhlYyA9IHN1cHBvcnQuY29yZS5leGVjO1xuY29uc3QgdXRpbCA9IHN1cHBvcnQudXRpbDtcbmNvbnN0IGZpbGVFeGlzdHMgPSBzdXBwb3J0LnV0aWwuZmlsZUV4aXN0cztcbmNvbnN0IGVzY2FwZVNwYWNlID0gc3VwcG9ydC51dGlsLmVzY2FwZVNwYWNlO1xuY29uc3QgcmVhZFN5bWxpbmsgPSBkZW5vZGVpZnkoZnMucmVhZGxpbmspO1xuY29uc3QgZW52ID0gcHJvY2Vzcy5lbnY7XG5cbmNvbnN0IFhDT0RFX1NFTEVDVF9USU1FT1VUID0gMzAwMDtcbmNvbnN0IFhDT0RFX1NVQkRJUiA9IFwiL0NvbnRlbnRzL0RldmVsb3BlclwiO1xuY29uc3QgREVGQVVMVF9OVU1CRVJfT0ZfUkVUUklFUyA9IDM7XG5cbmNvbnN0IGxvZyA9IHByb2Nlc3MuZW52LkdMT0JBTF9OUE1MT0cgPyBnbG9iYWwubG9nIDogbnBtbG9nO1xuXG5cbmZ1bmN0aW9uIGhhc0V4cGVjdGVkU3ViRGlyIChwYXRoKSB7XG4gIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxlbmd0aCAtIFhDT0RFX1NVQkRJUi5sZW5ndGgpID09PSBYQ09ERV9TVUJESVI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFBhdGhGcm9tU3ltbGluayAoZmFpbE1lc3NhZ2UpIHtcbiAgLy8gTm9kZSdzIGludm9jYXRpb24gb2YgeGNvZGUtc2VsZWN0IHNvbWV0aW1lcyBmbGFrZXMgYW5kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAvLyBOb3QgY2xlYXIgd2h5LiBBcyBhIHdvcmthcm91bmQsIEFwcGl1bSBjYW4gcmVsaWFibHkgZGVkdWNlIHRoZSB2ZXJzaW9uIGluIHVzZSBieSBjaGVja2luZ1xuICAvLyB0aGUgbG9jYXRpb25zIHhjb2RlLXNlbGVjdCB1c2VzIHRvIHN0b3JlIHRoZSBzZWxlY3RlZCB2ZXJzaW9uJ3MgcGF0aC4gVGhpcyBzaG91bGQgYmUgMTAwJVxuICAvLyByZWxpYWJsZSBzbyBsb25nIGFzIHRoZSBsaW5rIGxvY2F0aW9ucyByZW1haW4gdGhlIHNhbWUuIEhvd2V2ZXIsIHNpbmNlIHdlJ3JlIHJlbHlpbmcgb25cbiAgLy8gaGFyZGNvZGVkIHBhdGhzLCB0aGlzIGFwcHJvYWNoIHdpbGwgYnJlYWsgdGhlIG5leHQgdGltZSBBcHBsZSBjaGFuZ2VzIHRoZSBzeW1saW5rIGxvY2F0aW9uLlxuICBsb2cud2FybihgRmluZGluZyBYY29kZVBhdGggYnkgc3ltbGluayBiZWNhdXNlICR7ZmFpbE1lc3NhZ2V9YCk7XG5cbiAgY29uc3Qgc3ltbGlua1BhdGggPSBcIi92YXIvZGIveGNvZGVfc2VsZWN0X2xpbmtcIjtcbiAgY29uc3QgbGVnYWN5U3ltbGlua1BhdGggPSBcIi91c3Ivc2hhcmUveGNvZGUtc2VsZWN0L3hjb2RlX2Rpcl9wYXRoXCI7IC8vICBYY29kZSA8IDUueCAoPylcblxuICAvLyB4Y29kZS1zZWxlY3QgYWxsb3dzIHVzZXJzIHRvIG92ZXJyaWRlIGl0cyBzZXR0aW5ncyB3aXRoIHRoZSBERVZFTE9QRVJfRElSIGVudiB2YXIsXG4gIC8vIHNvIGNoZWNrIHRoYXQgZmlyc3RcbiAgaWYgKHV0aWwuaGFzQ29udGVudChlbnYuREVWRUxPUEVSX0RJUikpIHtcbiAgICBjb25zdCBjdXN0b21QYXRoID0gaGFzRXhwZWN0ZWRTdWJEaXIoZW52LkRFVkVMT1BFUl9ESVIpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LkRFVkVMT1BFUl9ESVIgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LkRFVkVMT1BFUl9ESVIgKyBYQ09ERV9TVUJESVI7XG5cbiAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhjdXN0b21QYXRoKSkge1xuICAgICAgcmV0dXJuIGN1c3RvbVBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXNnID0gYENvdWxkIG5vdCBmaW5kIHBhdGggdG8gWGNvZGUsIGVudmlyb25tZW50IHZhcmlhYmxlIGAgK1xuICAgICAgICAgICAgICAgICBgREVWRUxPUEVSX0RJUiBzZXQgdG86ICR7ZW52LkRFVkVMT1BFUl9ESVJ9IGAgK1xuICAgICAgICAgICAgICAgICBgYnV0IG5vIFhjb2RlIGZvdW5kYDtcbiAgICAgIGxvZy53YXJuKG1lc2cpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc2cpO1xuICAgIH1cbiAgfVxuXG5cbiAgaWYgKGF3YWl0IGZpbGVFeGlzdHMoc3ltbGlua1BhdGgpKSB7XG4gICAgcmV0dXJuIHJlYWRTeW1saW5rKHN5bWxpbmtQYXRoKTtcbiAgfVxuXG4gIGlmIChhd2FpdCBmaWxlRXhpc3RzKGxlZ2FjeVN5bWxpbmtQYXRoKSkge1xuICAgIHJldHVybiByZWFkU3ltbGluayhsZWdhY3lTeW1saW5rUGF0aCk7XG4gIH1cblxuICAvLyBXZSBzaG91bGQgb25seSBnZXQgaGVyZSBpcyB3ZSBmYWlsZWQgdG8gY2FwdHVyZSB4Y29kZS1zZWxlY3QncyBzdGRvdXQgYW5kIG91clxuICAvLyBvdGhlciBjaGVja3MgZmFpbGVkLiBFaXRoZXIgQXBwbGUgaGFzIG1vdmVkIHRoZSBzeW1saW5rIHRvIGEgbmV3IGxvY2F0aW9uIG9yIHRoZSB1c2VyXG4gIC8vIGlzIG5vdCB1c2luZyB0aGUgZGVmYXVsdCBpbnN0YWxsLiA5OS45OTklIGNoYW5jZSBpdCdzIHRoZSBsYXR0ZXIsIHNvIGlzc3VlIGEgd2FybmluZ1xuICAvLyBzaG91bGQgd2UgZXZlciBoaXQgdGhlIGVkZ2UgY2FzZS5cbiAgbGV0IG1zZyA9IGBDb3VsZCBub3QgZmluZCBwYXRoIHRvIFhjb2RlIGJ5IHN5bWxpbmtzIGxvY2F0ZWQgaW4gJHtzeW1saW5rUGF0aH0sIG9yICR7bGVnYWN5U3ltbGlua1BhdGh9YDtcbiAgbG9nLndhcm4obXNnKTtcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UGF0aEZyb21YY29kZVNlbGVjdCAoKSB7XG5cbiAgbGV0IFtzdGRvdXRdID0gYXdhaXQgZXhlYygneGNvZGUtc2VsZWN0IC0tcHJpbnQtcGF0aCcsIHttYXhCdWZmZXI6IDUyNDI4OCwgdGltZW91dDogWENPREVfU0VMRUNUX1RJTUVPVVR9KTtcblxuICAvLyB0cmltIGFuZCByZW1vdmUgdHJhaWxpbmcgc2xhc2hcbiAgY29uc3QgeGNvZGVGb2xkZXJQYXRoID0gc3Rkb3V0LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8kXCIpLCBcIlwiKS50cmltKCk7XG5cbiAgaWYgKCF1dGlsLmhhc0NvbnRlbnQoeGNvZGVGb2xkZXJQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInhjb2RlLXNlbGVjdCByZXR1cm5lZCBhbiBlbXB0eSBzdHJpbmdcIik7XG4gIH1cblxuICBpZiAoYXdhaXQgZmlsZUV4aXN0cyh4Y29kZUZvbGRlclBhdGgpKSB7XG4gICAgcmV0dXJuIHhjb2RlRm9sZGVyUGF0aDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtc2cgPSBgeGNvZGUtc2VsZWN0IGNvdWxkIG5vdCBmaW5kIHhjb2RlLiBQYXRoOiAke3hjb2RlRm9sZGVyUGF0aH0gZG9lcyBub3QgZXhpc3QuYDtcbiAgICBsb2cuZXJyb3IobXNnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxufVxuXG5jb25zdCBnZXRQYXRoID0gXy5tZW1vaXplKGZ1bmN0aW9uICgpIHtcblxuICAvLyBmaXJzdCB3ZSB0cnkgdXNpbmcgeGNvZGUtc2VsZWN0IHRvIGZpbmQgdGhlIHBhdGhcbiAgLy8gdGhlbiB3ZSB0cnkgdXNpbmcgdGhlIHN5bWxpbmtzIHRoYXQgQXBwbGUgaGFzIGJ5IGRlZmF1bHRcblxuICByZXR1cm4gZ2V0UGF0aEZyb21YY29kZVNlbGVjdCgpLmNhdGNoKGdldFBhdGhGcm9tU3ltbGluayk7XG59KTtcblxuXG5cbmFzeW5jIGZ1bmN0aW9uIGdldFZlcnNpb25XaXRob3V0UmV0cnkgKCkge1xuXG4gIGxldCB4Y29kZVBhdGggPSBhd2FpdCBnZXRQYXRoKCk7XG5cbiAgLy8gd2Ugd2FudCB0byByZWFkIHRoZSBDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyBmcm9tIFhjb2RlJ3MgcGxpc3QuXG4gIC8vIEl0IHNob3VsZCBiZSBpbiAvW3Jvb3RdL1hDb2RlLmFwcC9Db250ZW50cy9cbiAgY29uc3QgcGxpc3RQYXRoID0geGNvZGVQYXRoLnJlcGxhY2UoWENPREVfU1VCRElSLCBcIi9Db250ZW50cy9JbmZvLnBsaXN0XCIpO1xuXG4gIGlmICghYXdhaXQgZmlsZUV4aXN0cyhwbGlzdFBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZ2V0IFhjb2RlIHZlcnNpb24uICR7cGxpc3RQYXRofSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrLmApO1xuICB9XG5cbiAgY29uc3QgY21kID0gYC91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC1jICdQcmludCBDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZycgJHtlc2NhcGVTcGFjZShwbGlzdFBhdGgpfWA7XG4gIGxldCBbc3Rkb3V0XSA9IGF3YWl0IGV4ZWMoY21kLCB7bWF4QnVmZmVyOiA1MjQyODgsIHRpbWVvdXQ6IFhDT0RFX1NFTEVDVF9USU1FT1VUfSk7XG5cbiAgbGV0IHZlcnNpb25QYXR0ZXJuID0gL1xcZFxcLlxcZFxcLipcXGQqLztcbiAgLy8gbmVlZCB0byB1c2Ugc3RyaW5nI21hdGNoIGhlcmU7IHByZXZpb3VzIGNvZGUgdXNlZCByZWdleHAjZXhlYywgd2hpY2ggZG9lcyBub3QgcmV0dXJuIG51bGxcbiAgbGV0IG1hdGNoID0gc3Rkb3V0Lm1hdGNoKHZlcnNpb25QYXR0ZXJuKTtcbiAgaWYgKG1hdGNoID09PSBudWxsIHx8ICF1dGlsLmhhc0NvbnRlbnQobWF0Y2hbMF0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgWGNvZGUgdmVyc2lvbi4geGNvZGVidWlsZCBvdXRwdXQgd2FzOiAke3N0ZG91dH1gKTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaFswXTtcbn1cblxuXG5jb25zdCBnZXRWZXJzaW9uID0gXy5tZW1vaXplKFxuICBhc3luYyBmdW5jdGlvbiAocmV0cmllcyA9IERFRkFVTFRfTlVNQkVSX09GX1JFVFJJRVMpIHtcbiAgICByZXR1cm4gcmV0cnkocmV0cmllcywgZ2V0VmVyc2lvbldpdGhvdXRSZXRyeSk7XG4gIH1cbik7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aFdpdGhvdXRSZXRyeSAoKSB7XG5cbiAgY29uc3QgeGNvZGVQYXRoID0gYXdhaXQgZ2V0UGF0aCgpO1xuXG4gIC8vIGZvciBpb3MgOCBhbmQgdXAsIHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgQXV0aW9tYXRpb25JbnN0cnVtZW50IGNoYW5nZWQuXG4gIC8vIHJhdGhlciB0aGFuIHdhc3RlIHRpbWUgZ2V0dGluZyB0aGUgaU9TU0RLVmVyc2lvbiwganVzdCBnZXQgYm90aCBwYXRocyBhbmQgc2VlIHdoaWNoIG9uZSBleGlzdHNcbiAgY29uc3QgZXh0ZW5zaW9ucyA9IFsneHJwbHVnaW4nLCAnYnVuZGxlJ107XG4gIGNvbnN0IHBhdGhQcmVmaXggPSBwYXRoLnJlc29sdmUoeGNvZGVQYXRoLCBcIi4uL0FwcGxpY2F0aW9ucy9JbnN0cnVtZW50cy5hcHAvQ29udGVudHMvUGx1Z0luc1wiKTtcbiAgY29uc3QgcGF0aFN1ZmZpeCA9IFwiQ29udGVudHMvUmVzb3VyY2VzL0F1dG9tYXRpb24udHJhY2V0ZW1wbGF0ZVwiO1xuICBsZXQgYXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRocyA9IFtcbiAgICBwYXRoLnJlc29sdmUocGF0aFByZWZpeCwgXCJBdXRvbWF0aW9uSW5zdHJ1bWVudC5cIiArIGV4dGVuc2lvbnNbMF0sIHBhdGhTdWZmaXgpLFxuICAgIHBhdGgucmVzb2x2ZShwYXRoUHJlZml4LCBcIkF1dG9tYXRpb25JbnN0cnVtZW50LlwiICsgZXh0ZW5zaW9uc1sxXSwgcGF0aFN1ZmZpeClcbiAgXTtcblxuICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhhdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzWzBdKSkge1xuICAgIHJldHVybiBhdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzWzBdO1xuICB9XG5cbiAgaWYgKGF3YWl0IGZpbGVFeGlzdHMoYXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoc1sxXSkpIHtcbiAgICByZXR1cm4gYXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoc1sxXTtcbiAgfVxuXG4gIGNvbnN0IG1zZyA9IFwiQ291bGQgbm90IGZpbmQgQXV0b21hdGlvbi50cmFjZXRlbXBsYXRlIGluIGFueSBvZiB0aGUgZm9sbG93aW5nXCIgK1xuICAgICAgICAgICAgICBgbG9jYXRpb25zICR7YXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRocy50b1N0cmluZygpfWA7XG4gIGxvZy5lcnJvcihtc2cpO1xuICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcblxufVxuXG5jb25zdCBnZXRBdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGggPSBfLm1lbW9pemUoXG4gIGFzeW5jIGZ1bmN0aW9uIChyZXRyaWVzID0gREVGQVVMVF9OVU1CRVJfT0ZfUkVUUklFUykge1xuICAgIHJldHVybiByZXRyeShyZXRyaWVzLCBnZXRBdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhXaXRob3V0UmV0cnkpO1xuICB9XG4pO1xuXG4vLyBUT0RPIHJlbW92ZSB0aGlzIGZ1bmN0aW9uLiBzaG91bGQgcmVhbGx5IGp1c3QgYmUgdXNpbmcgJ2dldFZlcnNpb24oKScgZXZlcnl3aGVyZS5cbi8vIFRoaXMgd2FzIGFkZGVkIGZvciB0ZWNoLWRlYnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbmFzeW5jIGZ1bmN0aW9uIGdldE1heElPU1NES1dpdGhvdXRSZXRyeSAoKSB7XG5cbiAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGdldFZlcnNpb24oKTtcblxuICBpZiAodmVyc2lvbiA9PT0gJzQnKSB7XG4gICAgcmV0dXJuICc2LjEnO1xuICB9XG5cbiAgY29uc3QgY21kID0gYHhjcnVuIC0tc2RrIGlwaG9uZXNpbXVsYXRvciAtLXNob3ctc2RrLXZlcnNpb25gO1xuICBjb25zdCBbc3Rkb3V0XSA9IGF3YWl0IGV4ZWMoY21kLCB7bWF4QnVmZmVyOiA1MjQyODgsIHRpbWVvdXQ6IFhDT0RFX1NFTEVDVF9USU1FT1VUfSk7XG5cbiAgY29uc3Qgc2RrVmVyc2lvbiA9IHN0ZG91dC50cmltKCk7XG4gIGNvbnN0IG1hdGNoID0gL1xcZC5cXGQvLmV4ZWMoc3Rkb3V0KTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB4Y3J1biByZXR1cm5lZCBhIG5vbi1udW1lcmljIGlPUyBTREsgdmVyc2lvbjogJHtzZGtWZXJzaW9ufWApO1xuICB9XG5cbiAgcmV0dXJuIHNka1ZlcnNpb247XG59XG5cbmNvbnN0IGdldE1heElPU1NESyA9IF8ubWVtb2l6ZShcbiAgZnVuY3Rpb24gKHJldHJpZXMgPSBERUZBVUxUX05VTUJFUl9PRl9SRVRSSUVTKSB7XG4gICAgcmV0dXJuIHJldHJ5KHJldHJpZXMsIGdldE1heElPU1NES1dpdGhvdXRSZXRyeSk7XG4gIH1cbik7XG5cbmZ1bmN0aW9uIGNsZWFySW50ZXJuYWxDYWNoZSAoKSB7XG5cbiAgLy8gbWVtb2l6ZWQgZnVuY3Rpb25zXG4gIGNvbnN0IG1lbW9pemVkID0gW2dldFBhdGgsIGdldFZlcnNpb24sIGdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0TWF4SU9TU0RLXTtcblxuICBtZW1vaXplZC5mb3JFYWNoKChmKSA9PiB7XG4gICAgaWYgKGYuY2FjaGUpIHtcbiAgICAgIGYuY2FjaGUgPSBuZXcgXy5tZW1vaXplLkNhY2hlKCk7XG4gICAgfVxuICB9KTtcblxuXG59XG5cbmV4cG9ydCB7IGdldFBhdGgsIGdldFZlcnNpb24sIGdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aCwgZ2V0TWF4SU9TU0RLLFxuICAgICAgICAgZ2V0QXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoV2l0aG91dFJldHJ5LCBnZXRNYXhJT1NTREtXaXRob3V0UmV0cnksXG4gICAgICAgICBjbGVhckludGVybmFsQ2FjaGUgfTtcbiIsIk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGV4cG9ydHMsICRfX3BsYWNlaG9sZGVyX18wKTsiLCJ7Z2V0OiAkX19wbGFjZWhvbGRlcl9fMH0iLCJnZXQgJF9fcGxhY2Vob2xkZXJfXzAoKSB7IHJldHVybiAkX19wbGFjZWhvbGRlcl9fMTsgfSIsIl9fZXNNb2R1bGU6IHRydWUiLCJ7dmFsdWU6ICRfX3BsYWNlaG9sZGVyX18wfSIsIigkX19wbGFjZWhvbGRlcl9fMCA9IHJlcXVpcmUoJF9fcGxhY2Vob2xkZXJfXzEpLFxuICAgICAgICAkX19wbGFjZWhvbGRlcl9fMiAmJiAkX19wbGFjZWhvbGRlcl9fMy5fX2VzTW9kdWxlICYmICRfX3BsYWNlaG9sZGVyX180IHx8IHtkZWZhdWx0OiAkX19wbGFjZWhvbGRlcl9fNX0pIiwicmV0dXJuICRfX3BsYWNlaG9sZGVyX18wKFxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMSwgdGhpcyk7IiwiJHRyYWNldXJSdW50aW1lLmFzeW5jV3JhcCIsImZ1bmN0aW9uKCRjdHgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSAkX19wbGFjZWhvbGRlcl9fMFxuICAgIH0iLCIkY3R4LnN0YXRlID0gKCRfX3BsYWNlaG9sZGVyX18wKSA/ICRfX3BsYWNlaG9sZGVyX18xIDogJF9fcGxhY2Vob2xkZXJfXzI7XG4gICAgICAgIGJyZWFrIiwiUHJvbWlzZS5yZXNvbHZlKCRfX3BsYWNlaG9sZGVyX18wKS50aGVuKFxuICAgICAgICAgICRjdHguY3JlYXRlQ2FsbGJhY2soJF9fcGxhY2Vob2xkZXJfXzEpLCAkY3R4LmVycmJhY2spO1xuICAgICAgICAgIHJldHVybjsiLCIkY3R4LnZhbHVlIiwiJGN0eC5yZXR1cm5WYWx1ZSA9ICRfX3BsYWNlaG9sZGVyX18wIiwicmV0dXJuICRjdHguZW5kKCkiLCJ2YXIgJGFyZ3VtZW50cyA9IGFyZ3VtZW50czsiXX0=
//# sourceURL=xcode.js
exports.getPath = getPath;
exports.getVersion = getVersion;
exports.getAutomationTraceTemplatePath = getAutomationTraceTemplatePath;
exports.getMaxIOSSDK = getMaxIOSSDK;
exports.getAutomationTraceTemplatePathWithoutRetry = getAutomationTraceTemplatePathWithoutRetry;
exports.getMaxIOSSDKWithoutRetry = getMaxIOSSDKWithoutRetry;
exports.clearInternalCache = clearInternalCache;
// Xcode < 5.x (?)
// xcode-select allows users to override its settings with the DEVELOPER_DIR env var,
// so check that first
// We should only get here is we failed to capture xcode-select's stdout and our
// other checks failed. Either Apple has moved the symlink to a new location or the user
// is not using the default install. 99.999% chance it's the latter, so issue a warning
// should we ever hit the edge case.
// trim and remove trailing slash
// we want to read the CFBundleShortVersionString from Xcode's plist.
// It should be in /[root]/XCode.app/Contents/
// need to use string#match here; previous code used regexp#exec, which does not return null
// for ios 8 and up, the file extension for AutiomationInstrument changed.
// rather than waste time getting the iOSSDKVersion, just get both paths and see which one exists
//# sourceMappingURL=data:application/json;base64,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UUFFUSxPQUFPLEdBQVAsT0FBTztRQUFFLFVBQVUsR0FBVixVQUFVO1FBQUUsOEJBQThCLEdBQTlCLDhCQUE4QjtRQUFFLFlBQVksR0FBWixZQUFZO1FBQ2pFLDBDQUEwQyxHQUExQywwQ0FBMEM7UUFBRSx3QkFBd0IsR0FBeEIsd0JBQXdCO1FBQ3BFLGtCQUFrQixHQUFsQixrQkFBa0IiLCJmaWxlIjoibGliL3hjb2RlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5wbWxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0IHN1cHBvcnQgZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBkZW5vZGVpZnkgZnJvbSAnZGVub2RlaWZ5JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBleGVjID0gc3VwcG9ydC5jb3JlLmV4ZWM7XG5jb25zdCB1dGlsID0gc3VwcG9ydC51dGlsO1xuY29uc3QgZmlsZUV4aXN0cyA9IHN1cHBvcnQudXRpbC5maWxlRXhpc3RzO1xuY29uc3QgZXNjYXBlU3BhY2UgPSBzdXBwb3J0LnV0aWwuZXNjYXBlU3BhY2U7XG5jb25zdCByZWFkU3ltbGluayA9IGRlbm9kZWlmeShmcy5yZWFkbGluayk7XG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcblxuY29uc3QgWENPREVfU0VMRUNUX1RJTUVPVVQgPSAzMDAwO1xuY29uc3QgWENPREVfU1VCRElSID0gXCIvQ29udGVudHMvRGV2ZWxvcGVyXCI7XG5jb25zdCBERUZBVUxUX05VTUJFUl9PRl9SRVRSSUVTID0gMztcblxuY29uc3QgbG9nID0gcHJvY2Vzcy5lbnYuR0xPQkFMX05QTUxPRyA/IGdsb2JhbC5sb2cgOiBucG1sb2c7XG5cblxuZnVuY3Rpb24gaGFzRXhwZWN0ZWRTdWJEaXIgKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgubGVuZ3RoIC0gWENPREVfU1VCRElSLmxlbmd0aCkgPT09IFhDT0RFX1NVQkRJUjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UGF0aEZyb21TeW1saW5rIChmYWlsTWVzc2FnZSkge1xuICAvLyBOb2RlJ3MgaW52b2NhdGlvbiBvZiB4Y29kZS1zZWxlY3Qgc29tZXRpbWVzIGZsYWtlcyBhbmQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuXG4gIC8vIE5vdCBjbGVhciB3aHkuIEFzIGEgd29ya2Fyb3VuZCwgQXBwaXVtIGNhbiByZWxpYWJseSBkZWR1Y2UgdGhlIHZlcnNpb24gaW4gdXNlIGJ5IGNoZWNraW5nXG4gIC8vIHRoZSBsb2NhdGlvbnMgeGNvZGUtc2VsZWN0IHVzZXMgdG8gc3RvcmUgdGhlIHNlbGVjdGVkIHZlcnNpb24ncyBwYXRoLiBUaGlzIHNob3VsZCBiZSAxMDAlXG4gIC8vIHJlbGlhYmxlIHNvIGxvbmcgYXMgdGhlIGxpbmsgbG9jYXRpb25zIHJlbWFpbiB0aGUgc2FtZS4gSG93ZXZlciwgc2luY2Ugd2UncmUgcmVseWluZyBvblxuICAvLyBoYXJkY29kZWQgcGF0aHMsIHRoaXMgYXBwcm9hY2ggd2lsbCBicmVhayB0aGUgbmV4dCB0aW1lIEFwcGxlIGNoYW5nZXMgdGhlIHN5bWxpbmsgbG9jYXRpb24uXG4gIGxvZy53YXJuKGBGaW5kaW5nIFhjb2RlUGF0aCBieSBzeW1saW5rIGJlY2F1c2UgJHtmYWlsTWVzc2FnZX1gKTtcblxuICBjb25zdCBzeW1saW5rUGF0aCA9IFwiL3Zhci9kYi94Y29kZV9zZWxlY3RfbGlua1wiO1xuICBjb25zdCBsZWdhY3lTeW1saW5rUGF0aCA9IFwiL3Vzci9zaGFyZS94Y29kZS1zZWxlY3QveGNvZGVfZGlyX3BhdGhcIjsgLy8gIFhjb2RlIDwgNS54ICg/KVxuXG4gIC8vIHhjb2RlLXNlbGVjdCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgaXRzIHNldHRpbmdzIHdpdGggdGhlIERFVkVMT1BFUl9ESVIgZW52IHZhcixcbiAgLy8gc28gY2hlY2sgdGhhdCBmaXJzdFxuICBpZiAodXRpbC5oYXNDb250ZW50KGVudi5ERVZFTE9QRVJfRElSKSkge1xuICAgIGNvbnN0IGN1c3RvbVBhdGggPSBoYXNFeHBlY3RlZFN1YkRpcihlbnYuREVWRUxPUEVSX0RJUikgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYuREVWRUxPUEVSX0RJUiAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYuREVWRUxPUEVSX0RJUiArIFhDT0RFX1NVQkRJUjtcblxuICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGN1c3RvbVBhdGgpKSB7XG4gICAgICByZXR1cm4gY3VzdG9tUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1lc2cgPSBgQ291bGQgbm90IGZpbmQgcGF0aCB0byBYY29kZSwgZW52aXJvbm1lbnQgdmFyaWFibGUgYCArXG4gICAgICAgICAgICAgICAgIGBERVZFTE9QRVJfRElSIHNldCB0bzogJHtlbnYuREVWRUxPUEVSX0RJUn0gYCArXG4gICAgICAgICAgICAgICAgIGBidXQgbm8gWGNvZGUgZm91bmRgO1xuICAgICAgbG9nLndhcm4obWVzZyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzZyk7XG4gICAgfVxuICB9XG5cblxuICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhzeW1saW5rUGF0aCkpIHtcbiAgICByZXR1cm4gcmVhZFN5bWxpbmsoc3ltbGlua1BhdGgpO1xuICB9XG5cbiAgaWYgKGF3YWl0IGZpbGVFeGlzdHMobGVnYWN5U3ltbGlua1BhdGgpKSB7XG4gICAgcmV0dXJuIHJlYWRTeW1saW5rKGxlZ2FjeVN5bWxpbmtQYXRoKTtcbiAgfVxuXG4gIC8vIFdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGlzIHdlIGZhaWxlZCB0byBjYXB0dXJlIHhjb2RlLXNlbGVjdCdzIHN0ZG91dCBhbmQgb3VyXG4gIC8vIG90aGVyIGNoZWNrcyBmYWlsZWQuIEVpdGhlciBBcHBsZSBoYXMgbW92ZWQgdGhlIHN5bWxpbmsgdG8gYSBuZXcgbG9jYXRpb24gb3IgdGhlIHVzZXJcbiAgLy8gaXMgbm90IHVzaW5nIHRoZSBkZWZhdWx0IGluc3RhbGwuIDk5Ljk5OSUgY2hhbmNlIGl0J3MgdGhlIGxhdHRlciwgc28gaXNzdWUgYSB3YXJuaW5nXG4gIC8vIHNob3VsZCB3ZSBldmVyIGhpdCB0aGUgZWRnZSBjYXNlLlxuICBsZXQgbXNnID0gYENvdWxkIG5vdCBmaW5kIHBhdGggdG8gWGNvZGUgYnkgc3ltbGlua3MgbG9jYXRlZCBpbiAke3N5bWxpbmtQYXRofSwgb3IgJHtsZWdhY3lTeW1saW5rUGF0aH1gO1xuICBsb2cud2Fybihtc2cpO1xuICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcblxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQYXRoRnJvbVhjb2RlU2VsZWN0ICgpIHtcblxuICBsZXQgW3N0ZG91dF0gPSBhd2FpdCBleGVjKCd4Y29kZS1zZWxlY3QgLS1wcmludC1wYXRoJywge21heEJ1ZmZlcjogNTI0Mjg4LCB0aW1lb3V0OiBYQ09ERV9TRUxFQ1RfVElNRU9VVH0pO1xuXG4gIC8vIHRyaW0gYW5kIHJlbW92ZSB0cmFpbGluZyBzbGFzaFxuICBjb25zdCB4Y29kZUZvbGRlclBhdGggPSBzdGRvdXQucmVwbGFjZShuZXcgUmVnRXhwKFwiLyRcIiksIFwiXCIpLnRyaW0oKTtcblxuICBpZiAoIXV0aWwuaGFzQ29udGVudCh4Y29kZUZvbGRlclBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwieGNvZGUtc2VsZWN0IHJldHVybmVkIGFuIGVtcHR5IHN0cmluZ1wiKTtcbiAgfVxuXG4gIGlmIChhd2FpdCBmaWxlRXhpc3RzKHhjb2RlRm9sZGVyUGF0aCkpIHtcbiAgICByZXR1cm4geGNvZGVGb2xkZXJQYXRoO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1zZyA9IGB4Y29kZS1zZWxlY3QgY291bGQgbm90IGZpbmQgeGNvZGUuIFBhdGg6ICR7eGNvZGVGb2xkZXJQYXRofSBkb2VzIG5vdCBleGlzdC5gO1xuICAgIGxvZy5lcnJvcihtc2cpO1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG59XG5cbmNvbnN0IGdldFBhdGggPSBfLm1lbW9pemUoZnVuY3Rpb24gKCkge1xuXG4gIC8vIGZpcnN0IHdlIHRyeSB1c2luZyB4Y29kZS1zZWxlY3QgdG8gZmluZCB0aGUgcGF0aFxuICAvLyB0aGVuIHdlIHRyeSB1c2luZyB0aGUgc3ltbGlua3MgdGhhdCBBcHBsZSBoYXMgYnkgZGVmYXVsdFxuXG4gIHJldHVybiBnZXRQYXRoRnJvbVhjb2RlU2VsZWN0KCkuY2F0Y2goZ2V0UGF0aEZyb21TeW1saW5rKTtcbn0pO1xuXG5cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VmVyc2lvbldpdGhvdXRSZXRyeSAoKSB7XG5cbiAgbGV0IHhjb2RlUGF0aCA9IGF3YWl0IGdldFBhdGgoKTtcblxuICAvLyB3ZSB3YW50IHRvIHJlYWQgdGhlIENGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nIGZyb20gWGNvZGUncyBwbGlzdC5cbiAgLy8gSXQgc2hvdWxkIGJlIGluIC9bcm9vdF0vWENvZGUuYXBwL0NvbnRlbnRzL1xuICBjb25zdCBwbGlzdFBhdGggPSB4Y29kZVBhdGgucmVwbGFjZShYQ09ERV9TVUJESVIsIFwiL0NvbnRlbnRzL0luZm8ucGxpc3RcIik7XG5cbiAgaWYgKCFhd2FpdCBmaWxlRXhpc3RzKHBsaXN0UGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBnZXQgWGNvZGUgdmVyc2lvbi4gJHtwbGlzdFBhdGh9IGRvZXMgbm90IGV4aXN0IG9uIGRpc2suYCk7XG4gIH1cblxuICBjb25zdCBjbWQgPSBgL3Vzci9saWJleGVjL1BsaXN0QnVkZHkgLWMgJ1ByaW50IENGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nJyAke2VzY2FwZVNwYWNlKHBsaXN0UGF0aCl9YDtcbiAgbGV0IFtzdGRvdXRdID0gYXdhaXQgZXhlYyhjbWQsIHttYXhCdWZmZXI6IDUyNDI4OCwgdGltZW91dDogWENPREVfU0VMRUNUX1RJTUVPVVR9KTtcblxuICBsZXQgdmVyc2lvblBhdHRlcm4gPSAvXFxkXFwuXFxkXFwuKlxcZCovO1xuICAvLyBuZWVkIHRvIHVzZSBzdHJpbmcjbWF0Y2ggaGVyZTsgcHJldmlvdXMgY29kZSB1c2VkIHJlZ2V4cCNleGVjLCB3aGljaCBkb2VzIG5vdCByZXR1cm4gbnVsbFxuICBsZXQgbWF0Y2ggPSBzdGRvdXQubWF0Y2godmVyc2lvblBhdHRlcm4pO1xuICBpZiAobWF0Y2ggPT09IG51bGwgfHwgIXV0aWwuaGFzQ29udGVudChtYXRjaFswXSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBYY29kZSB2ZXJzaW9uLiB4Y29kZWJ1aWxkIG91dHB1dCB3YXM6ICR7c3Rkb3V0fWApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufVxuXG5cbmNvbnN0IGdldFZlcnNpb24gPSBfLm1lbW9pemUoXG4gIGZ1bmN0aW9uIChyZXRyaWVzID0gREVGQVVMVF9OVU1CRVJfT0ZfUkVUUklFUykge1xuICAgIHJldHVybiByZXRyeShyZXRyaWVzLCBnZXRWZXJzaW9uV2l0aG91dFJldHJ5KTtcbiAgfVxuKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0QXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoV2l0aG91dFJldHJ5ICgpIHtcblxuICBjb25zdCB4Y29kZVBhdGggPSBhd2FpdCBnZXRQYXRoKCk7XG5cbiAgLy8gZm9yIGlvcyA4IGFuZCB1cCwgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBBdXRpb21hdGlvbkluc3RydW1lbnQgY2hhbmdlZC5cbiAgLy8gcmF0aGVyIHRoYW4gd2FzdGUgdGltZSBnZXR0aW5nIHRoZSBpT1NTREtWZXJzaW9uLCBqdXN0IGdldCBib3RoIHBhdGhzIGFuZCBzZWUgd2hpY2ggb25lIGV4aXN0c1xuICBjb25zdCBleHRlbnNpb25zID0gWyd4cnBsdWdpbicsICdidW5kbGUnXTtcbiAgY29uc3QgcGF0aFByZWZpeCA9IHBhdGgucmVzb2x2ZSh4Y29kZVBhdGgsIFwiLi4vQXBwbGljYXRpb25zL0luc3RydW1lbnRzLmFwcC9Db250ZW50cy9QbHVnSW5zXCIpO1xuICBjb25zdCBwYXRoU3VmZml4ID0gXCJDb250ZW50cy9SZXNvdXJjZXMvQXV0b21hdGlvbi50cmFjZXRlbXBsYXRlXCI7XG4gIGxldCBhdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzID0gW1xuICAgIHBhdGgucmVzb2x2ZShwYXRoUHJlZml4LCBcIkF1dG9tYXRpb25JbnN0cnVtZW50LlwiICsgZXh0ZW5zaW9uc1swXSwgcGF0aFN1ZmZpeCksXG4gICAgcGF0aC5yZXNvbHZlKHBhdGhQcmVmaXgsIFwiQXV0b21hdGlvbkluc3RydW1lbnQuXCIgKyBleHRlbnNpb25zWzFdLCBwYXRoU3VmZml4KVxuICBdO1xuXG4gIGlmIChhd2FpdCBmaWxlRXhpc3RzKGF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aHNbMF0pKSB7XG4gICAgcmV0dXJuIGF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aHNbMF07XG4gIH1cblxuICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhhdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzWzFdKSkge1xuICAgIHJldHVybiBhdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzWzFdO1xuICB9XG5cbiAgY29uc3QgbXNnID0gXCJDb3VsZCBub3QgZmluZCBBdXRvbWF0aW9uLnRyYWNldGVtcGxhdGUgaW4gYW55IG9mIHRoZSBmb2xsb3dpbmdcIiArXG4gICAgICAgICAgICAgIGBsb2NhdGlvbnMgJHthdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhzLnRvU3RyaW5nKCl9YDtcbiAgbG9nLmVycm9yKG1zZyk7XG4gIHRocm93IG5ldyBFcnJvcihtc2cpO1xuXG59XG5cbmNvbnN0IGdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aCA9IF8ubWVtb2l6ZShcbiAgZnVuY3Rpb24gKHJldHJpZXMgPSBERUZBVUxUX05VTUJFUl9PRl9SRVRSSUVTKSB7XG4gICAgcmV0dXJuIHJldHJ5KHJldHJpZXMsIGdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aFdpdGhvdXRSZXRyeSk7XG4gIH1cbik7XG5cbi8vIFRPRE8gcmVtb3ZlIHRoaXMgZnVuY3Rpb24uIHNob3VsZCByZWFsbHkganVzdCBiZSB1c2luZyAnZ2V0VmVyc2lvbigpJyBldmVyeXdoZXJlLlxuLy8gVGhpcyB3YXMgYWRkZWQgZm9yIHRlY2gtZGVidCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuYXN5bmMgZnVuY3Rpb24gZ2V0TWF4SU9TU0RLV2l0aG91dFJldHJ5ICgpIHtcblxuICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgZ2V0VmVyc2lvbigpO1xuXG4gIGlmICh2ZXJzaW9uID09PSAnNCcpIHtcbiAgICByZXR1cm4gJzYuMSc7XG4gIH1cblxuICBjb25zdCBjbWQgPSBgeGNydW4gLS1zZGsgaXBob25lc2ltdWxhdG9yIC0tc2hvdy1zZGstdmVyc2lvbmA7XG4gIGNvbnN0IFtzdGRvdXRdID0gYXdhaXQgZXhlYyhjbWQsIHttYXhCdWZmZXI6IDUyNDI4OCwgdGltZW91dDogWENPREVfU0VMRUNUX1RJTUVPVVR9KTtcblxuICBjb25zdCBzZGtWZXJzaW9uID0gc3Rkb3V0LnRyaW0oKTtcbiAgY29uc3QgbWF0Y2ggPSAvXFxkLlxcZC8uZXhlYyhzdGRvdXQpO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHhjcnVuIHJldHVybmVkIGEgbm9uLW51bWVyaWMgaU9TIFNESyB2ZXJzaW9uOiAke3Nka1ZlcnNpb259YCk7XG4gIH1cblxuICByZXR1cm4gc2RrVmVyc2lvbjtcbn1cblxuY29uc3QgZ2V0TWF4SU9TU0RLID0gXy5tZW1vaXplKFxuICBmdW5jdGlvbiAocmV0cmllcyA9IERFRkFVTFRfTlVNQkVSX09GX1JFVFJJRVMpIHtcbiAgICByZXR1cm4gcmV0cnkocmV0cmllcywgZ2V0TWF4SU9TU0RLV2l0aG91dFJldHJ5KTtcbiAgfVxuKTtcblxuZnVuY3Rpb24gY2xlYXJJbnRlcm5hbENhY2hlICgpIHtcblxuICAvLyBtZW1vaXplZCBmdW5jdGlvbnNcbiAgY29uc3QgbWVtb2l6ZWQgPSBbZ2V0UGF0aCwgZ2V0VmVyc2lvbiwgZ2V0QXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoLFxuICAgICAgICAgICAgICAgICAgICBnZXRNYXhJT1NTREtdO1xuXG4gIG1lbW9pemVkLmZvckVhY2goKGYpID0+IHtcbiAgICBpZiAoZi5jYWNoZSkge1xuICAgICAgZi5jYWNoZSA9IG5ldyBfLm1lbW9pemUuQ2FjaGUoKTtcbiAgICB9XG4gIH0pO1xuXG5cbn1cblxuZXhwb3J0IHsgZ2V0UGF0aCwgZ2V0VmVyc2lvbiwgZ2V0QXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoLCBnZXRNYXhJT1NTREssXG4gICAgICAgICBnZXRBdXRvbWF0aW9uVHJhY2VUZW1wbGF0ZVBhdGhXaXRob3V0UmV0cnksIGdldE1heElPU1NES1dpdGhvdXRSZXRyeSxcbiAgICAgICAgIGNsZWFySW50ZXJuYWxDYWNoZSB9O1xuIl19

@@ -1,201 +0,207 @@

"use strict";
var $___46__46__47_lib_47_xcode__,
$__chai__,
$__chai_45_as_45_promised__,
$__mochawait__,
$__fs__,
$__denodeify__,
$__lodash__;
require('appium-transpile-runtime');
var xcode = ($___46__46__47_lib_47_xcode__ = require("../lib/xcode"), $___46__46__47_lib_47_xcode__ && $___46__46__47_lib_47_xcode__.__esModule && $___46__46__47_lib_47_xcode__ || {default: $___46__46__47_lib_47_xcode__});
var chai = ($__chai__ = require("chai"), $__chai__ && $__chai__.__esModule && $__chai__ || {default: $__chai__}).default;
var chaiAsPromised = ($__chai_45_as_45_promised__ = require("chai-as-promised"), $__chai_45_as_45_promised__ && $__chai_45_as_45_promised__.__esModule && $__chai_45_as_45_promised__ || {default: $__chai_45_as_45_promised__}).default;
($__mochawait__ = require("mochawait"), $__mochawait__ && $__mochawait__.__esModule && $__mochawait__ || {default: $__mochawait__});
var fs = ($__fs__ = require("fs"), $__fs__ && $__fs__.__esModule && $__fs__ || {default: $__fs__}).default;
var denodeify = ($__denodeify__ = require("denodeify"), $__denodeify__ && $__denodeify__.__esModule && $__denodeify__ || {default: $__denodeify__}).default;
var _ = ($__lodash__ = require("lodash"), $__lodash__ && $__lodash__.__esModule && $__lodash__ || {default: $__lodash__}).default;
var should = chai.should();
chai.use(chaiAsPromised);
var fileExists = denodeify(fs.stat);
describe('xcode @skip-linux', (function() {
it('should get the path to xcode executable', function() {
'use strict';
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireWildcard = require('babel-runtime/helpers/interop-require-wildcard')['default'];
var _this = this;
var _import = require('../lib/xcode');
var xcode = _interopRequireWildcard(_import);
var _chai = require('chai');
var _chai2 = _interopRequireWildcard(_chai);
var _chaiAsPromised = require('chai-as-promised');
var _chaiAsPromised2 = _interopRequireWildcard(_chaiAsPromised);
require('mochawait');
var _fs = require('fs');
var _fs2 = _interopRequireWildcard(_fs);
var _denodeify = require('denodeify');
var _denodeify2 = _interopRequireWildcard(_denodeify);
var _import2 = require('lodash');
var _import3 = _interopRequireWildcard(_import2);
require('source-map-support').install();
var should = _chai2['default'].should();
_chai2['default'].use(_chaiAsPromised2['default']);
var fileExists = _denodeify2['default'](_fs2['default'].stat);
describe('xcode @skip-linux', function () {
it('should get the path to xcode executable', function callee$1$0() {
var path;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(xcode.getPath()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
path = $ctx.value;
$ctx.state = 2;
break;
case 2:
should.exist(path);
$ctx.state = 7;
break;
case 7:
Promise.resolve(fileExists(path)).then($ctx.createCallback(-2), $ctx.errback);
return;
default:
return $ctx.end();
}
}, this);
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return xcode.getPath();
case 2:
path = context$2$0.sent;
should.exist(path);
context$2$0.next = 6;
return fileExists(path);
case 6:
case 'end':
return context$2$0.stop();
}
}, null, this);
});
it('should get the version of xcode', function() {
it('should get the version of xcode', function callee$1$1() {
var version;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(xcode.getVersion()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
version = $ctx.value;
$ctx.state = 2;
break;
case 2:
should.exist(version);
_.isString(version).should.be.true;
/\d\.\d\.*\d*/.test(version).should.be.true;
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
return _regeneratorRuntime.async(function callee$1$1$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return xcode.getVersion();
case 2:
version = context$2$0.sent;
should.exist(version);
_import3['default'].isString(version).should.be['true'];
/\d\.\d\.*\d*/.test(version).should.be['true'];
case 6:
case 'end':
return context$2$0.stop();
}
}, null, this);
});
it('should get the path and version again, these values are cached', function() {
var before,
path,
after,
version;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(xcode.getPath()).then($ctx.createCallback(2), $ctx.errback);
return;
case 2:
Promise.resolve(xcode.getVersion()).then($ctx.createCallback(4), $ctx.errback);
return;
case 4:
before = new Date();
$ctx.state = 14;
break;
case 14:
Promise.resolve(xcode.getPath()).then($ctx.createCallback(7), $ctx.errback);
return;
case 7:
path = $ctx.value;
$ctx.state = 6;
break;
case 6:
after = new Date();
should.exist(path);
$ctx.state = 16;
break;
case 16:
Promise.resolve(fileExists(path)).then($ctx.createCallback(9), $ctx.errback);
return;
case 9:
(after - before).should.be.at.most(2);
before = new Date();
$ctx.state = 18;
break;
case 18:
Promise.resolve(xcode.getVersion()).then($ctx.createCallback(12), $ctx.errback);
return;
case 12:
version = $ctx.value;
$ctx.state = 11;
break;
case 11:
after = new Date();
should.exist(version);
_.isString(version).should.be.true;
/\d\.\d\.*\d*/.test(version).should.be.true;
(after - before).should.be.at.most(2);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
it('should get the path and version again, these values are cached', function callee$1$2() {
var before, path, after, version;
return _regeneratorRuntime.async(function callee$1$2$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return xcode.getPath();
case 2:
context$2$0.next = 4;
return xcode.getVersion();
case 4:
before = new Date();
context$2$0.next = 7;
return xcode.getPath();
case 7:
path = context$2$0.sent;
after = new Date();
should.exist(path);
context$2$0.next = 12;
return fileExists(path);
case 12:
(after - before).should.be.at.most(2);
before = new Date();
context$2$0.next = 16;
return xcode.getVersion();
case 16:
version = context$2$0.sent;
after = new Date();
should.exist(version);
_import3['default'].isString(version).should.be['true'];
/\d\.\d\.*\d*/.test(version).should.be['true'];
(after - before).should.be.at.most(2);
case 22:
case 'end':
return context$2$0.stop();
}
}, null, this);
});
it('should clear the cache if asked to', function() {
var before,
after;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
xcode.clearInternalCache();
before = new Date();
$ctx.state = 4;
break;
case 4:
Promise.resolve(xcode.getPath()).then($ctx.createCallback(2), $ctx.errback);
return;
case 2:
after = new Date();
(after - before).should.be.at.least(7);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
it('should clear the cache if asked to', function callee$1$3() {
var before, after;
return _regeneratorRuntime.async(function callee$1$3$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
xcode.clearInternalCache();
before = new Date();
context$2$0.next = 4;
return xcode.getPath();
case 4:
after = new Date();
(after - before).should.be.at.least(7);
case 6:
case 'end':
return context$2$0.stop();
}
}, null, this);
});
it('should find the automation trace template', (function() {
var path,
suffix;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(xcode.getAutomationTraceTemplatePath()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
path = $ctx.value;
$ctx.state = 2;
break;
case 2:
should.exist(path);
fileExists(path).should.eventually.be.true;
suffix = ".tracetemplate";
path.slice(-suffix.length).should.equal(suffix);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}));
it('should get max iOS SDK version', (function() {
it('should find the automation trace template', function callee$1$4() {
var path, suffix;
return _regeneratorRuntime.async(function callee$1$4$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return xcode.getAutomationTraceTemplatePath();
case 2:
path = context$2$0.sent;
should.exist(path);
fileExists(path).should.eventually.be['true'];
suffix = '.tracetemplate';
path.slice(-suffix.length).should.equal(suffix);
case 7:
case 'end':
return context$2$0.stop();
}
}, null, _this);
});
it('should get max iOS SDK version', function callee$1$5() {
var version;
return $traceurRuntime.asyncWrap(function($ctx) {
while (true)
switch ($ctx.state) {
case 0:
Promise.resolve(xcode.getMaxIOSSDK()).then($ctx.createCallback(3), $ctx.errback);
return;
case 3:
version = $ctx.value;
$ctx.state = 2;
break;
case 2:
should.exist(version);
(typeof version).should.equal('string');
(parseFloat(version) - 6.1).should.be.at.least(0);
$ctx.state = -2;
break;
default:
return $ctx.end();
}
}, this);
}));
}));
return _regeneratorRuntime.async(function callee$1$5$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return xcode.getMaxIOSSDK();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGNvZGUtc3BlY3MuanMiLCJzb3VyY2VzIjpbInhjb2RlLXNwZWNzLmpzIiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzIiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvMTUiLCJAdHJhY2V1ci9nZW5lcmF0ZWQvVGVtcGxhdGVQYXJzZXIvOCIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xNCIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci8xMiIsIkB0cmFjZXVyL2dlbmVyYXRlZC9UZW1wbGF0ZVBhcnNlci85IiwiQHRyYWNldXIvZ2VuZXJhdGVkL1RlbXBsYXRlUGFyc2VyLzEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7Ozs7OztBQUFBLE1BQU0sQUFBQyxDQUFDLDBCQUF5QixDQUFDLENBQUM7RUFDdkIsTUFBSSxFQ0ZoQixFQUFDLCtCQUFvQixDQUFBLE9BQU0sQUFBQyxnQkFBa0IsQ0FDdEMsQ0FBQSxnQ0FBcUIseUNBQTJCLENBQUEsZ0NBQXFCLEdBQUssRUFBQyxPQUFNLCtCQUFtQixDQUQ5RCxBQUMrRCxDQUFDO0VERXZHLEtBQUcsRUNIVixFQUFDLFdBQW9CLENBQUEsT0FBTSxBQUFDLFFBQWtCLENBQ3RDLENBQUEsWUFBcUIscUJBQTJCLENBQUEsWUFBcUIsR0FBSyxFQUFDLE9BQU0sV0FBbUIsQ0FEOUQsQUFDK0QsQ0FBQztFREd2RyxlQUFhLEVDSnBCLEVBQUMsNkJBQW9CLENBQUEsT0FBTSxBQUFDLG9CQUFrQixDQUN0QyxDQUFBLDhCQUFxQix1Q0FBMkIsQ0FBQSw4QkFBcUIsR0FBSyxFQUFDLE9BQU0sNkJBQW1CLENBRDlELEFBQytELENBQUM7QUFEOUcsQUFBQyxnQkFBb0IsQ0FBQSxPQUFNLEFBQUMsYUFBa0IsQ0FDdEMsQ0FBQSxpQkFBcUIsMEJBQTJCLENBQUEsaUJBQXFCLEdBQUssRUFBQyxPQUFNLGdCQUFtQixDQUQ5RCxBQUMrRCxDQUFDO0VE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LFFBQU8sQ0FBQyxDQUFDO0FBQ3ZDLFlBQUMsVUFBUyxBQUFDLENBQUMsT0FBTSxDQUFDLENBQUEsQ0FBRSxJQUFFLENBQUMsT0FBTyxHQUFHLEdBQUcsTUFBTSxBQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7Ozs7QU9sRm5ELGlCQUFPLENBQUEsSUFBRyxJQUFJLEFBQUMsRUFBQyxDQUFBOztBSENtQixJQUMvQixDRkQ2QixLQUFHLENBQUMsQ0FBQztFRmtGcEMsRUFBQyxDQUFDO0FBRUosRUFBQyxDQUFDO0FBQ0YiLCJzb3VyY2VSb290IjoiL1VzZXJzL2pvbmFoc3MvV29ya3NwYWNlL2FwcGl1bS14Y29kZS90ZXN0LyIsInNvdXJjZXNDb250ZW50IjpbIi8qIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGgvdG8vc291cmNlLm1hcCovXG5yZXF1aXJlKCdhcHBpdW0tdHJhbnNwaWxlLXJ1bnRpbWUnKTtcbmltcG9ydCAqIGFzIHhjb2RlIGZyb20gJy4uL2xpYi94Y29kZSc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmltcG9ydCAnbW9jaGF3YWl0JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgZGVub2RlaWZ5IGZyb20gJ2Rlbm9kZWlmeSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5sZXQgc2hvdWxkID0gY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxubGV0IGZpbGVFeGlzdHMgPSBkZW5vZGVpZnkoZnMuc3RhdCk7XG5cbmRlc2NyaWJlKCd4Y29kZSBAc2tpcC1saW51eCcsICgpID0+IHtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgcGF0aCB0byB4Y29kZSBleGVjdXRhYmxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuXG4gICAgbGV0IHBhdGggPSBhd2FpdCB4Y29kZS5nZXRQYXRoKCk7XG4gICAgc2hvdWxkLmV4aXN0KHBhdGgpO1xuICAgIGF3YWl0IGZpbGVFeGlzdHMocGF0aCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHZlcnNpb24gb2YgeGNvZGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG5cbiAgICBsZXQgdmVyc2lvbiA9IGF3YWl0IHhjb2RlLmdldFZlcnNpb24oKTtcbiAgICBzaG91bGQuZXhpc3QodmVyc2lvbik7XG4gICAgXy5pc1N0cmluZyh2ZXJzaW9uKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAvXFxkXFwuXFxkXFwuKlxcZCovLnRlc3QodmVyc2lvbikuc2hvdWxkLmJlLnRydWU7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBwYXRoIGFuZCB2ZXJzaW9uIGFnYWluLCB0aGVzZSB2YWx1ZXMgYXJlIGNhY2hlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcblxuICAgIGF3YWl0IHhjb2RlLmdldFBhdGgoKTtcbiAgICBhd2FpdCB4Y29kZS5nZXRWZXJzaW9uKCk7XG5cbiAgICBsZXQgYmVmb3JlID0gbmV3IERhdGUoKTtcbiAgICBsZXQgcGF0aCA9IGF3YWl0IHhjb2RlLmdldFBhdGgoKTtcbiAgICBsZXQgYWZ0ZXIgPSBuZXcgRGF0ZSgpO1xuXG4gICAgc2hvdWxkLmV4aXN0KHBhdGgpO1xuICAgIGF3YWl0IGZpbGVFeGlzdHMocGF0aCk7XG4gICAgKGFmdGVyLWJlZm9yZSkuc2hvdWxkLmJlLmF0Lm1vc3QoMik7XG5cbiAgICBiZWZvcmUgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCB2ZXJzaW9uID0gYXdhaXQgeGNvZGUuZ2V0VmVyc2lvbigpO1xuICAgIGFmdGVyID0gbmV3IERhdGUoKTtcblxuICAgIHNob3VsZC5leGlzdCh2ZXJzaW9uKTtcbiAgICBfLmlzU3RyaW5nKHZlcnNpb24pLnNob3VsZC5iZS50cnVlO1xuICAgIC9cXGRcXC5cXGRcXC4qXFxkKi8udGVzdCh2ZXJzaW9uKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAoYWZ0ZXItYmVmb3JlKS5zaG91bGQuYmUuYXQubW9zdCgyKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIGNsZWFyIHRoZSBjYWNoZSBpZiBhc2tlZCB0bycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcblxuICAgIHhjb2RlLmNsZWFySW50ZXJuYWxDYWNoZSgpO1xuXG4gICAgbGV0IGJlZm9yZSA9IG5ldyBEYXRlKCk7XG4gICAgYXdhaXQgeGNvZGUuZ2V0UGF0aCgpO1xuICAgIGxldCBhZnRlciA9IG5ldyBEYXRlKCk7XG4gICAgKGFmdGVyLWJlZm9yZSkuc2hvdWxkLmJlLmF0LmxlYXN0KDcpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmluZCB0aGUgYXV0b21hdGlvbiB0cmFjZSB0ZW1wbGF0ZScsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgcGF0aCA9IGF3YWl0IHhjb2RlLmdldEF1dG9tYXRpb25UcmFjZVRlbXBsYXRlUGF0aCgpO1xuXG4gICAgc2hvdWxkLmV4aXN0KHBhdGgpO1xuICAgIGZpbGVFeGlzdHMocGF0aCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUudHJ1ZTtcbiAgICBsZXQgc3VmZml4ID0gXCIudHJhY2V0ZW1wbGF0ZVwiO1xuICAgIHBhdGguc2xpY2UoLXN1ZmZpeC5sZW5ndGgpLnNob3VsZC5lcXVhbChzdWZmaXgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBtYXggaU9TIFNESyB2ZXJzaW9uJywgYXN5bmMoKSA9PiB7XG4gICAgbGV0IHZlcnNpb24gPSBhd2FpdCB4Y29kZS5nZXRNYXhJT1NTREsoKTtcblxuICAgIHNob3VsZC5leGlzdCh2ZXJzaW9uKTtcbiAgICAodHlwZW9mIHZlcnNpb24pLnNob3VsZC5lcXVhbCgnc3RyaW5nJyk7XG4gICAgKHBhcnNlRmxvYXQodmVyc2lvbiktNi4xKS5zaG91bGQuYmUuYXQubGVhc3QoMCk7XG4gIH0pO1xuXG59KTtcbiIsIigkX19wbGFjZWhvbGRlcl9fMCA9IHJlcXVpcmUoJF9fcGxhY2Vob2xkZXJfXzEpLFxuICAgICAgICAkX19wbGFjZWhvbGRlcl9fMiAmJiAkX19wbGFjZWhvbGRlcl9fMy5fX2VzTW9kdWxlICYmICRfX3BsYWNlaG9sZGVyX180IHx8IHtkZWZhdWx0OiAkX19wbGFjZWhvbGRlcl9fNX0pIiwicmV0dXJuICRfX3BsYWNlaG9sZGVyX18wKFxuICAgICAgICAgICAgICAkX19wbGFjZWhvbGRlcl9fMSwgdGhpcyk7IiwiJHRyYWNldXJSdW50aW1lLmFzeW5jV3JhcCIsImZ1bmN0aW9uKCRjdHgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSAkX19wbGFjZWhvbGRlcl9fMFxuICAgIH0iLCJQcm9taXNlLnJlc29sdmUoJF9fcGxhY2Vob2xkZXJfXzApLnRoZW4oXG4gICAgICAgICAgJGN0eC5jcmVhdGVDYWxsYmFjaygkX19wbGFjZWhvbGRlcl9fMSksICRjdHguZXJyYmFjayk7XG4gICAgICAgICAgcmV0dXJuOyIsIiRjdHgudmFsdWUiLCJyZXR1cm4gJGN0eC5lbmQoKSJdfQ==
//# sourceURL=xcode-specs.js
case 2:
version = context$2$0.sent;
should.exist(version);
(typeof version).should.equal('string');
(parseFloat(version) - 6.1).should.be.at.least(0);
case 6:
case 'end':
return context$2$0.stop();
}
}, null, _this);
});
});
//# sourceMappingURL=data:application/json;base64,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SUFBSSxJQUFJLEVBQUU7O0FBQ3RCLFdBQUMsS0FBSyxHQUFDLE1BQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Ozs7OztHQUV0QyxDQUFDLENBQUM7O0FBRUgsSUFBRSxDQUFDLDJDQUEyQyxFQUFFO1FBQzFDLElBQUksRUFJSixNQUFNOzs7OztpQkFKTyxLQUFLLENBQUMsOEJBQThCLEVBQUU7OztBQUFuRCxjQUFJOztBQUVSLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLG9CQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQUssQ0FBQztBQUN2QyxnQkFBTSxHQUFHLGdCQUFnQjs7QUFDN0IsY0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7O0dBQ2pELENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsZ0NBQWdDLEVBQUU7UUFDL0IsT0FBTzs7Ozs7aUJBQVMsS0FBSyxDQUFDLFlBQVksRUFBRTs7O0FBQXBDLGlCQUFPOztBQUVYLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLFdBQUMsT0FBTyxPQUFPLENBQUEsQ0FBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLFdBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFDLEdBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Ozs7OztHQUNqRCxDQUFDLENBQUM7Q0FFSixDQUFDLENBQUMiLCJmaWxlIjoidGVzdC94Y29kZS1zcGVjcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydCcpLmluc3RhbGwoKTtcblxuaW1wb3J0ICogYXMgeGNvZGUgZnJvbSAnLi4vbGliL3hjb2RlJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0ICdtb2NoYXdhaXQnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBkZW5vZGVpZnkgZnJvbSAnZGVub2RlaWZ5JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmxldCBzaG91bGQgPSBjaGFpLnNob3VsZCgpO1xuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5sZXQgZmlsZUV4aXN0cyA9IGRlbm9kZWlmeShmcy5zdGF0KTtcblxuZGVzY3JpYmUoJ3hjb2RlIEBza2lwLWxpbnV4JywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBwYXRoIHRvIHhjb2RlIGV4ZWN1dGFibGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG5cbiAgICBsZXQgcGF0aCA9IGF3YWl0IHhjb2RlLmdldFBhdGgoKTtcbiAgICBzaG91bGQuZXhpc3QocGF0aCk7XG4gICAgYXdhaXQgZmlsZUV4aXN0cyhwYXRoKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgdmVyc2lvbiBvZiB4Y29kZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcblxuICAgIGxldCB2ZXJzaW9uID0gYXdhaXQgeGNvZGUuZ2V0VmVyc2lvbigpO1xuICAgIHNob3VsZC5leGlzdCh2ZXJzaW9uKTtcbiAgICBfLmlzU3RyaW5nKHZlcnNpb24pLnNob3VsZC5iZS50cnVlO1xuICAgIC9cXGRcXC5cXGRcXC4qXFxkKi8udGVzdCh2ZXJzaW9uKS5zaG91bGQuYmUudHJ1ZTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBhdGggYW5kIHZlcnNpb24gYWdhaW4sIHRoZXNlIHZhbHVlcyBhcmUgY2FjaGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuXG4gICAgYXdhaXQgeGNvZGUuZ2V0UGF0aCgpO1xuICAgIGF3YWl0IHhjb2RlLmdldFZlcnNpb24oKTtcblxuICAgIGxldCBiZWZvcmUgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBwYXRoID0gYXdhaXQgeGNvZGUuZ2V0UGF0aCgpO1xuICAgIGxldCBhZnRlciA9IG5ldyBEYXRlKCk7XG5cbiAgICBzaG91bGQuZXhpc3QocGF0aCk7XG4gICAgYXdhaXQgZmlsZUV4aXN0cyhwYXRoKTtcbiAgICAoYWZ0ZXItYmVmb3JlKS5zaG91bGQuYmUuYXQubW9zdCgyKTtcblxuICAgIGJlZm9yZSA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IHZlcnNpb24gPSBhd2FpdCB4Y29kZS5nZXRWZXJzaW9uKCk7XG4gICAgYWZ0ZXIgPSBuZXcgRGF0ZSgpO1xuXG4gICAgc2hvdWxkLmV4aXN0KHZlcnNpb24pO1xuICAgIF8uaXNTdHJpbmcodmVyc2lvbikuc2hvdWxkLmJlLnRydWU7XG4gICAgL1xcZFxcLlxcZFxcLipcXGQqLy50ZXN0KHZlcnNpb24pLnNob3VsZC5iZS50cnVlO1xuICAgIChhZnRlci1iZWZvcmUpLnNob3VsZC5iZS5hdC5tb3N0KDIpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2xlYXIgdGhlIGNhY2hlIGlmIGFza2VkIHRvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuXG4gICAgeGNvZGUuY2xlYXJJbnRlcm5hbENhY2hlKCk7XG5cbiAgICBsZXQgYmVmb3JlID0gbmV3IERhdGUoKTtcbiAgICBhd2FpdCB4Y29kZS5nZXRQYXRoKCk7XG4gICAgbGV0IGFmdGVyID0gbmV3IERhdGUoKTtcbiAgICAoYWZ0ZXItYmVmb3JlKS5zaG91bGQuYmUuYXQubGVhc3QoNyk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaW5kIHRoZSBhdXRvbWF0aW9uIHRyYWNlIHRlbXBsYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBwYXRoID0gYXdhaXQgeGNvZGUuZ2V0QXV0b21hdGlvblRyYWNlVGVtcGxhdGVQYXRoKCk7XG5cbiAgICBzaG91bGQuZXhpc3QocGF0aCk7XG4gICAgZmlsZUV4aXN0cyhwYXRoKS5zaG91bGQuZXZlbnR1YWxseS5iZS50cnVlO1xuICAgIGxldCBzdWZmaXggPSBcIi50cmFjZXRlbXBsYXRlXCI7XG4gICAgcGF0aC5zbGljZSgtc3VmZml4Lmxlbmd0aCkuc2hvdWxkLmVxdWFsKHN1ZmZpeCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IG1heCBpT1MgU0RLIHZlcnNpb24nLCBhc3luYygpID0+IHtcbiAgICBsZXQgdmVyc2lvbiA9IGF3YWl0IHhjb2RlLmdldE1heElPU1NESygpO1xuXG4gICAgc2hvdWxkLmV4aXN0KHZlcnNpb24pO1xuICAgICh0eXBlb2YgdmVyc2lvbikuc2hvdWxkLmVxdWFsKCdzdHJpbmcnKTtcbiAgICAocGFyc2VGbG9hdCh2ZXJzaW9uKS02LjEpLnNob3VsZC5iZS5hdC5sZWFzdCgwKTtcbiAgfSk7XG5cbn0pO1xuIl19
"use strict";
var gulp = require('gulp'),
merge = require('merge-stream'),
mocha = require('gulp-mocha'),
Q = require('q'),
spawnWatcher = require('appium-gulp-plugins').spawnWatcher.use(gulp),
Transpiler = require('appium-gulp-plugins').Transpiler,
runSequence = Q.denodeify(require('run-sequence')),
jshint = require('gulp-jshint'),
jscs = require('gulp-jscs'),
vinylPaths = require('vinyl-paths'),
del = require('del');
boilerplate = require('appium-gulp-plugins').boilerplate.use(gulp);
var argv = require('yargs')
.count('prod')
.argv;
gulp.task('clean', function () {
return gulp.src('build', {read: false})
.pipe(vinylPaths(del));
});
gulp.task('transpile', function () {
var transpiler = new Transpiler();
if (!argv.prod) {
transpiler.traceurOpts.typeAssertions = true;
transpiler.traceurOpts.typeAssertionModule = 'rtts-assert';
}
var index = gulp.src('index.js')
.pipe(transpiler.stream())
.on('error', spawnWatcher.handleError)
.pipe(gulp.dest('build'));
var lib = gulp.src('lib/**/*.js')
.pipe(transpiler.stream())
.on('error', spawnWatcher.handleError)
.pipe(gulp.dest('build/lib'));
var test = gulp.src('test/**/*.js')
.pipe(transpiler.stream())
.on('error', spawnWatcher.handleError)
.pipe(gulp.dest('build/test'));
return merge(index, lib, test);
});
gulp.task('jscs', function () {
return gulp
.src(['gulpfile.js'])
.pipe(jscs())
.on('error', spawnWatcher.handleError);
});
gulp.task('jshint', function () {
return gulp
.src(['*.js', 'lib/**/*.js', 'test/**/*.js'])
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'))
.on('error', spawnWatcher.handleError);
});
gulp.task('lint',['jshint','jscs']);
gulp.task('test', ['transpile'], function () {
process.env.SKIP_TRACEUR_RUNTIME = true;
return gulp
.src('build/test/**/*-specs.js', {read: false})
.pipe(mocha({reporter: 'nyan'}))
.on('error', spawnWatcher.handleError);
});
process.env.APPIUM_NOTIF_BUILD_NAME = 'appium-xcode';
spawnWatcher.configure('watch', ['index.js', 'lib/**/*.js','test/**/*.js'], function () {
return runSequence('clean', 'lint', 'transpile', 'test');
});
gulp.task('prepublish', function () {
return runSequence('clean', 'transpile');
});
gulp.task('once', function () {
return runSequence('clean','lint', 'transpile','test');
});
gulp.task('default', ['watch']);
boilerplate({build: "Appium Xcode", jscs: false});

@@ -132,3 +132,3 @@ import npmlog from 'npmlog';

const getVersion = _.memoize(
async function (retries = DEFAULT_NUMBER_OF_RETRIES) {
function (retries = DEFAULT_NUMBER_OF_RETRIES) {
return retry(retries, getVersionWithoutRetry);

@@ -168,3 +168,3 @@ }

const getAutomationTraceTemplatePath = _.memoize(
async function (retries = DEFAULT_NUMBER_OF_RETRIES) {
function (retries = DEFAULT_NUMBER_OF_RETRIES) {
return retry(retries, getAutomationTraceTemplatePathWithoutRetry);

@@ -171,0 +171,0 @@ }

@@ -7,3 +7,3 @@ {

],
"version": "1.0.2",
"version": "2.0.0",
"author": "appium",

@@ -28,10 +28,9 @@ "license": "Apache License 2.0",

"appium-support": "^1.0.0",
"appium-transpile-runtime": "^0.0.4",
"asyncbox": "^1.0.9",
"chai": "^2.1.2",
"chai-as-promised": "^4.3.0",
"asyncbox": "^2.0.2",
"babel-runtime": "^5.0.12",
"denodeify": "^1.2.1",
"lodash": "^3.6.0",
"npmlog": "^1.2.0",
"q": "^1.2.0"
"q": "^1.2.0",
"source-map-support": "^0.2.10"
},

@@ -44,19 +43,8 @@ "scripts": {

"devDependencies": {
"appium-gulp-plugins": "^0.0.10",
"chai": "^1.10.0",
"chai-as-promised": "^4.1.1",
"del": "^1.1.1",
"appium-gulp-plugins": "^1.0.3",
"chai": "^2.2.0",
"chai-as-promised": "^4.3.0",
"gulp": "^3.8.10",
"gulp-jscs": "^1.3.1",
"gulp-jshint": "https://github.com/appium/gulp-jshint/archive/master.tar.gz",
"gulp-mocha": "^2.0.0",
"jshint-stylish": "^1.0.0",
"lodash": "^3.6.0",
"merge-stream": "^0.1.6",
"mocha": "^2.1.0",
"mochawait": "^1.1.0",
"run-sequence": "^1.0.2",
"vinyl-paths": "^1.0.0",
"yargs": "^1.3.3"
"mochawait": "^2.0.0"
}
}