appium 2.0.0-beta.2 → 2.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/build/lib/appium-config.schema.json +0 -0
- package/build/lib/appium.js +157 -53
- package/build/lib/cli/argparse-actions.js +104 -0
- package/build/lib/cli/args.js +115 -279
- package/build/lib/cli/driver-command.js +11 -1
- package/build/lib/cli/extension-command.js +60 -8
- package/build/lib/cli/extension.js +30 -7
- package/build/lib/cli/npm.js +17 -14
- package/build/lib/cli/parser.js +152 -89
- package/build/lib/cli/plugin-command.js +11 -1
- package/build/lib/cli/utils.js +29 -3
- package/build/lib/config-file.js +141 -0
- package/build/lib/config.js +76 -61
- package/build/lib/driver-config.js +42 -19
- package/build/lib/drivers.js +8 -4
- package/build/lib/ext-config-io.js +165 -0
- package/build/lib/extension-config.js +130 -61
- package/build/lib/grid-register.js +22 -24
- package/build/lib/logger.js +3 -3
- package/build/lib/logsink.js +11 -13
- package/build/lib/main.js +197 -77
- package/build/lib/plugin-config.js +20 -10
- package/build/lib/plugins.js +4 -2
- package/build/lib/schema/appium-config-schema.js +252 -0
- package/build/lib/schema/arg-spec.js +120 -0
- package/build/lib/schema/cli-args.js +173 -0
- package/build/lib/schema/cli-transformers.js +76 -0
- package/build/lib/schema/index.js +36 -0
- package/build/lib/schema/keywords.js +62 -0
- package/build/lib/schema/schema.js +357 -0
- package/build/lib/utils.js +44 -99
- package/lib/appium-config.schema.json +277 -0
- package/lib/appium.js +201 -65
- package/lib/cli/argparse-actions.js +77 -0
- package/lib/cli/args.js +174 -375
- package/lib/cli/driver-command.js +4 -0
- package/lib/cli/extension-command.js +70 -5
- package/lib/cli/extension.js +25 -5
- package/lib/cli/npm.js +18 -12
- package/lib/cli/parser.js +254 -79
- package/lib/cli/plugin-command.js +4 -0
- package/lib/cli/utils.js +21 -1
- package/lib/config-file.js +227 -0
- package/lib/config.js +109 -62
- package/lib/driver-config.js +66 -11
- package/lib/drivers.js +4 -1
- package/lib/ext-config-io.js +287 -0
- package/lib/extension-config.js +225 -67
- package/lib/grid-register.js +27 -24
- package/lib/logger.js +1 -1
- package/lib/logsink.js +10 -7
- package/lib/main.js +211 -77
- package/lib/plugin-config.js +34 -5
- package/lib/plugins.js +1 -0
- package/lib/schema/appium-config-schema.js +286 -0
- package/lib/schema/arg-spec.js +218 -0
- package/lib/schema/cli-args.js +273 -0
- package/lib/schema/cli-transformers.js +123 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +119 -0
- package/lib/schema/schema.js +577 -0
- package/lib/utils.js +42 -88
- package/package.json +55 -80
- package/postinstall.js +71 -0
- package/types/appium-config.d.ts +197 -0
- package/types/types.d.ts +201 -0
- package/CHANGELOG.md +0 -3515
- package/build/lib/cli/parser-helpers.js +0 -82
- package/lib/cli/parser-helpers.js +0 -79
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.parseSecurityFeatures = parseSecurityFeatures;
|
|
9
|
-
exports.parseDefaultCaps = parseDefaultCaps;
|
|
10
|
-
exports.parseInstallTypes = parseInstallTypes;
|
|
11
|
-
exports.parsePluginNames = parsePluginNames;
|
|
12
|
-
|
|
13
|
-
require("source-map-support/register");
|
|
14
|
-
|
|
15
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
16
|
-
|
|
17
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
18
|
-
|
|
19
|
-
var _extensionConfig = require("../extension-config");
|
|
20
|
-
|
|
21
|
-
function parseSecurityFeatures(features) {
|
|
22
|
-
const splitter = (splitOn, str) => `${str}`.split(splitOn).map(s => s.trim()).filter(Boolean);
|
|
23
|
-
|
|
24
|
-
let parsedFeatures;
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
parsedFeatures = splitter(',', features);
|
|
28
|
-
} catch (err) {
|
|
29
|
-
throw new Error('Could not parse value of --allow/deny-insecure. Should be ' + 'a list of strings separated by commas, or a path to a file ' + 'listing one feature name per line.');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (parsedFeatures.length === 1 && _fs.default.existsSync(parsedFeatures[0])) {
|
|
33
|
-
try {
|
|
34
|
-
const fileFeatures = _fs.default.readFileSync(parsedFeatures[0], 'utf8');
|
|
35
|
-
|
|
36
|
-
parsedFeatures = splitter('\n', fileFeatures);
|
|
37
|
-
} catch (err) {
|
|
38
|
-
throw new Error(`Attempted to read --allow/deny-insecure feature names ` + `from file ${parsedFeatures[0]} but got error: ${err.message}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return parsedFeatures;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function parsePluginNames(names) {
|
|
46
|
-
if (!_lodash.default.isString(names)) {
|
|
47
|
-
throw new Error('To parse plugin names, names must be a CSV string');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
return names.split(',').map(s => s.trim()).filter(Boolean);
|
|
52
|
-
} catch (err) {
|
|
53
|
-
throw new Error('Could not parse value of --plugins. Should be a list of plugin names ' + 'separated by commas. Plugin names are those found when running `appium ' + 'plugin list`');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function parseDefaultCaps(caps) {
|
|
58
|
-
try {
|
|
59
|
-
if (_fs.default.statSync(caps).isFile()) {
|
|
60
|
-
caps = _fs.default.readFileSync(caps, 'utf8');
|
|
61
|
-
}
|
|
62
|
-
} catch (err) {}
|
|
63
|
-
|
|
64
|
-
caps = JSON.parse(caps);
|
|
65
|
-
|
|
66
|
-
if (!_lodash.default.isPlainObject(caps)) {
|
|
67
|
-
throw 'Invalid format for default capabilities';
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return caps;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function parseInstallTypes(source) {
|
|
74
|
-
if (!_lodash.default.includes(_extensionConfig.INSTALL_TYPES, source)) {
|
|
75
|
-
throw `Argument to --source was '${source}', which is not a valid ` + `driver source type. It must be one of ${JSON.stringify(_extensionConfig.INSTALL_TYPES)}`;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return source;
|
|
79
|
-
}require('source-map-support').install();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLWhlbHBlcnMuanMiXSwibmFtZXMiOlsicGFyc2VTZWN1cml0eUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJzcGxpdHRlciIsInNwbGl0T24iLCJzdHIiLCJzcGxpdCIsIm1hcCIsInMiLCJ0cmltIiwiZmlsdGVyIiwiQm9vbGVhbiIsInBhcnNlZEZlYXR1cmVzIiwiZXJyIiwiRXJyb3IiLCJsZW5ndGgiLCJmcyIsImV4aXN0c1N5bmMiLCJmaWxlRmVhdHVyZXMiLCJyZWFkRmlsZVN5bmMiLCJtZXNzYWdlIiwicGFyc2VQbHVnaW5OYW1lcyIsIm5hbWVzIiwiXyIsImlzU3RyaW5nIiwicGFyc2VEZWZhdWx0Q2FwcyIsImNhcHMiLCJzdGF0U3luYyIsImlzRmlsZSIsIkpTT04iLCJwYXJzZSIsImlzUGxhaW5PYmplY3QiLCJwYXJzZUluc3RhbGxUeXBlcyIsInNvdXJjZSIsImluY2x1ZGVzIiwiSU5TVEFMTF9UWVBFUyIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxxQkFBVCxDQUFnQ0MsUUFBaEMsRUFBMEM7QUFDeEMsUUFBTUMsUUFBUSxHQUFHLENBQUNDLE9BQUQsRUFBVUMsR0FBVixLQUFtQixHQUFFQSxHQUFJLEVBQVAsQ0FBU0MsS0FBVCxDQUFlRixPQUFmLEVBQXdCRyxHQUF4QixDQUE2QkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsRUFBbkMsRUFBNkNDLE1BQTdDLENBQW9EQyxPQUFwRCxDQUFuQzs7QUFDQSxNQUFJQyxjQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsR0FBRCxFQUFNRCxRQUFOLENBQXpCO0FBQ0QsR0FGRCxDQUVFLE9BQU9XLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsS0FBSixDQUFVLCtEQUNBLDZEQURBLEdBRUEsb0NBRlYsQ0FBTjtBQUdEOztBQUVELE1BQUlGLGNBQWMsQ0FBQ0csTUFBZixLQUEwQixDQUExQixJQUErQkMsWUFBR0MsVUFBSCxDQUFjTCxjQUFjLENBQUMsQ0FBRCxDQUE1QixDQUFuQyxFQUFxRTtBQUVuRSxRQUFJO0FBQ0YsWUFBTU0sWUFBWSxHQUFHRixZQUFHRyxZQUFILENBQWdCUCxjQUFjLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxNQUFuQyxDQUFyQjs7QUFDQUEsTUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsSUFBRCxFQUFPZSxZQUFQLENBQXpCO0FBQ0QsS0FIRCxDQUdFLE9BQU9MLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUFXLHdEQUFELEdBQ0MsYUFBWUYsY0FBYyxDQUFDLENBQUQsQ0FBSSxtQkFBa0JDLEdBQUcsQ0FBQ08sT0FBUSxFQUR2RSxDQUFOO0FBRUQ7QUFDRjs7QUFFRCxTQUFPUixjQUFQO0FBQ0Q7O0FBRUQsU0FBU1MsZ0JBQVQsQ0FBMkJDLEtBQTNCLEVBQWtDO0FBQ2hDLE1BQUksQ0FBQ0MsZ0JBQUVDLFFBQUYsQ0FBV0YsS0FBWCxDQUFMLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSVIsS0FBSixDQUFVLG1EQUFWLENBQU47QUFDRDs7QUFFRCxNQUFJO0FBQ0YsV0FBT1EsS0FBSyxDQUFDaEIsS0FBTixDQUFZLEdBQVosRUFBaUJDLEdBQWpCLENBQXNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsSUFBRixFQUE1QixFQUFzQ0MsTUFBdEMsQ0FBNkNDLE9BQTdDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1osVUFBTSxJQUFJQyxLQUFKLENBQVUsMEVBQ0EseUVBREEsR0FFQSxjQUZWLENBQU47QUFHRDtBQUNGOztBQUVELFNBQVNXLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQztBQUMvQixNQUFJO0FBTUYsUUFBSVYsWUFBR1csUUFBSCxDQUFZRCxJQUFaLEVBQWtCRSxNQUFsQixFQUFKLEVBQWdDO0FBQzlCRixNQUFBQSxJQUFJLEdBQUdWLFlBQUdHLFlBQUgsQ0FBZ0JPLElBQWhCLEVBQXNCLE1BQXRCLENBQVA7QUFDRDtBQUNGLEdBVEQsQ0FTRSxPQUFPYixHQUFQLEVBQVksQ0FFYjs7QUFDRGEsRUFBQUEsSUFBSSxHQUFHRyxJQUFJLENBQUNDLEtBQUwsQ0FBV0osSUFBWCxDQUFQOztBQUNBLE1BQUksQ0FBQ0gsZ0JBQUVRLGFBQUYsQ0FBZ0JMLElBQWhCLENBQUwsRUFBNEI7QUFDMUIsVUFBTSx5Q0FBTjtBQUNEOztBQUNELFNBQU9BLElBQVA7QUFDRDs7QUFFRCxTQUFTTSxpQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0M7QUFDbEMsTUFBSSxDQUFDVixnQkFBRVcsUUFBRixDQUFXQyw4QkFBWCxFQUEwQkYsTUFBMUIsQ0FBTCxFQUF3QztBQUN0QyxVQUFPLDZCQUE0QkEsTUFBTywwQkFBcEMsR0FDQyx5Q0FBd0NKLElBQUksQ0FBQ08sU0FBTCxDQUFlRCw4QkFBZixDQUE4QixFQUQ3RTtBQUVEOztBQUVELFNBQU9GLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSU5TVEFMTF9UWVBFUyB9IGZyb20gJy4uL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vLyBzZXJ2ZXJBcmdzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBzZXJ2ZXJgIChkZWZhdWx0KSBzdWJjb21tYW5kXG5mdW5jdGlvbiBwYXJzZVNlY3VyaXR5RmVhdHVyZXMgKGZlYXR1cmVzKSB7XG4gIGNvbnN0IHNwbGl0dGVyID0gKHNwbGl0T24sIHN0cikgPT4gYCR7c3RyfWAuc3BsaXQoc3BsaXRPbikubWFwKChzKSA9PiBzLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuICBsZXQgcGFyc2VkRmVhdHVyZXM7XG4gIHRyeSB7XG4gICAgcGFyc2VkRmVhdHVyZXMgPSBzcGxpdHRlcignLCcsIGZlYXR1cmVzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1hbGxvdy9kZW55LWluc2VjdXJlLiBTaG91bGQgYmUgJyArXG4gICAgICAgICAgICAgICAgICAgICdhIGxpc3Qgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzLCBvciBhIHBhdGggdG8gYSBmaWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAnbGlzdGluZyBvbmUgZmVhdHVyZSBuYW1lIHBlciBsaW5lLicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEZlYXR1cmVzLmxlbmd0aCA9PT0gMSAmJiBmcy5leGlzdHNTeW5jKHBhcnNlZEZlYXR1cmVzWzBdKSkge1xuICAgIC8vIHdlIG1pZ2h0IGhhdmUgYSBmaWxlIHdoaWNoIGlzIGEgbGlzdCBvZiBmZWF0dXJlc1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlRmVhdHVyZXMgPSBmcy5yZWFkRmlsZVN5bmMocGFyc2VkRmVhdHVyZXNbMF0sICd1dGY4Jyk7XG4gICAgICBwYXJzZWRGZWF0dXJlcyA9IHNwbGl0dGVyKCdcXG4nLCBmaWxlRmVhdHVyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gcmVhZCAtLWFsbG93L2RlbnktaW5zZWN1cmUgZmVhdHVyZSBuYW1lcyBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgZnJvbSBmaWxlICR7cGFyc2VkRmVhdHVyZXNbMF19IGJ1dCBnb3QgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZEZlYXR1cmVzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBsdWdpbk5hbWVzIChuYW1lcykge1xuICBpZiAoIV8uaXNTdHJpbmcobmFtZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUbyBwYXJzZSBwbHVnaW4gbmFtZXMsIG5hbWVzIG11c3QgYmUgYSBDU1Ygc3RyaW5nJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuYW1lcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1wbHVnaW5zLiBTaG91bGQgYmUgYSBsaXN0IG9mIHBsdWdpbiBuYW1lcyAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlZCBieSBjb21tYXMuIFBsdWdpbiBuYW1lcyBhcmUgdGhvc2UgZm91bmQgd2hlbiBydW5uaW5nIGBhcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICdwbHVnaW4gbGlzdGAnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURlZmF1bHRDYXBzIChjYXBzKSB7XG4gIHRyeSB7XG4gICAgLy8gdXNlIHN5bmNocm9ub3VzIGZpbGUgYWNjZXNzLCBhcyBgYXJncGFyc2VgIHByb3ZpZGVzIG5vIHdheSBvZiBlaXRoZXJcbiAgICAvLyBhd2FpdGluZyBvciB1c2luZyBjYWxsYmFja3MuIFRoaXMgc3RlcCBoYXBwZW5zIGluIHN0YXJ0dXAsIGluIHdoYXQgaXNcbiAgICAvLyBlZmZlY3RpdmVseSBjb21tYW5kLWxpbmUgY29kZSwgc28gbm90aGluZyBpcyBibG9ja2VkIGluIHRlcm1zIG9mXG4gICAgLy8gc2Vzc2lvbnMsIHNvIGhvbGRpbmcgdXAgdGhlIGV2ZW50IGxvb3AgZG9lcyBub3QgaW5jdXIgdGhlIHVzdWFsXG4gICAgLy8gZHJhd2JhY2tzLlxuICAgIGlmIChmcy5zdGF0U3luYyhjYXBzKS5pc0ZpbGUoKSkge1xuICAgICAgY2FwcyA9IGZzLnJlYWRGaWxlU3luYyhjYXBzLCAndXRmOCcpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gbm90IGEgZmlsZSwgb3Igbm90IHJlYWRhYmxlXG4gIH1cbiAgY2FwcyA9IEpTT04ucGFyc2UoY2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgdGhyb3cgJ0ludmFsaWQgZm9ybWF0IGZvciBkZWZhdWx0IGNhcGFiaWxpdGllcyc7XG4gIH1cbiAgcmV0dXJuIGNhcHM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5zdGFsbFR5cGVzIChzb3VyY2UpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKElOU1RBTExfVFlQRVMsIHNvdXJjZSkpIHtcbiAgICB0aHJvdyBgQXJndW1lbnQgdG8gLS1zb3VyY2Ugd2FzICcke3NvdXJjZX0nLCB3aGljaCBpcyBub3QgYSB2YWxpZCBgICtcbiAgICAgICAgICBgZHJpdmVyIHNvdXJjZSB0eXBlLiBJdCBtdXN0IGJlIG9uZSBvZiAke0pTT04uc3RyaW5naWZ5KElOU1RBTExfVFlQRVMpfWA7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gIHBhcnNlRGVmYXVsdENhcHMsXG4gIHBhcnNlSW5zdGFsbFR5cGVzLFxuICBwYXJzZVBsdWdpbk5hbWVzLFxufTtcbiJdLCJmaWxlIjoibGliL2NsaS9wYXJzZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import { INSTALL_TYPES } from '../extension-config';
|
|
4
|
-
|
|
5
|
-
// serverArgs will be added to the `server` (default) subcommand
|
|
6
|
-
function parseSecurityFeatures (features) {
|
|
7
|
-
const splitter = (splitOn, str) => `${str}`.split(splitOn).map((s) => s.trim()).filter(Boolean);
|
|
8
|
-
let parsedFeatures;
|
|
9
|
-
try {
|
|
10
|
-
parsedFeatures = splitter(',', features);
|
|
11
|
-
} catch (err) {
|
|
12
|
-
throw new Error('Could not parse value of --allow/deny-insecure. Should be ' +
|
|
13
|
-
'a list of strings separated by commas, or a path to a file ' +
|
|
14
|
-
'listing one feature name per line.');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (parsedFeatures.length === 1 && fs.existsSync(parsedFeatures[0])) {
|
|
18
|
-
// we might have a file which is a list of features
|
|
19
|
-
try {
|
|
20
|
-
const fileFeatures = fs.readFileSync(parsedFeatures[0], 'utf8');
|
|
21
|
-
parsedFeatures = splitter('\n', fileFeatures);
|
|
22
|
-
} catch (err) {
|
|
23
|
-
throw new Error(`Attempted to read --allow/deny-insecure feature names ` +
|
|
24
|
-
`from file ${parsedFeatures[0]} but got error: ${err.message}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return parsedFeatures;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function parsePluginNames (names) {
|
|
32
|
-
if (!_.isString(names)) {
|
|
33
|
-
throw new Error('To parse plugin names, names must be a CSV string');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
try {
|
|
37
|
-
return names.split(',').map((s) => s.trim()).filter(Boolean);
|
|
38
|
-
} catch (err) {
|
|
39
|
-
throw new Error('Could not parse value of --plugins. Should be a list of plugin names ' +
|
|
40
|
-
'separated by commas. Plugin names are those found when running `appium ' +
|
|
41
|
-
'plugin list`');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function parseDefaultCaps (caps) {
|
|
46
|
-
try {
|
|
47
|
-
// use synchronous file access, as `argparse` provides no way of either
|
|
48
|
-
// awaiting or using callbacks. This step happens in startup, in what is
|
|
49
|
-
// effectively command-line code, so nothing is blocked in terms of
|
|
50
|
-
// sessions, so holding up the event loop does not incur the usual
|
|
51
|
-
// drawbacks.
|
|
52
|
-
if (fs.statSync(caps).isFile()) {
|
|
53
|
-
caps = fs.readFileSync(caps, 'utf8');
|
|
54
|
-
}
|
|
55
|
-
} catch (err) {
|
|
56
|
-
// not a file, or not readable
|
|
57
|
-
}
|
|
58
|
-
caps = JSON.parse(caps);
|
|
59
|
-
if (!_.isPlainObject(caps)) {
|
|
60
|
-
throw 'Invalid format for default capabilities';
|
|
61
|
-
}
|
|
62
|
-
return caps;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function parseInstallTypes (source) {
|
|
66
|
-
if (!_.includes(INSTALL_TYPES, source)) {
|
|
67
|
-
throw `Argument to --source was '${source}', which is not a valid ` +
|
|
68
|
-
`driver source type. It must be one of ${JSON.stringify(INSTALL_TYPES)}`;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return source;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export {
|
|
75
|
-
parseSecurityFeatures,
|
|
76
|
-
parseDefaultCaps,
|
|
77
|
-
parseInstallTypes,
|
|
78
|
-
parsePluginNames,
|
|
79
|
-
};
|