appium 2.0.0-beta.9 → 2.0.0-rc.2

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.
Files changed (208) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +149 -58
  3. package/build/lib/appium.d.ts +229 -0
  4. package/build/lib/appium.d.ts.map +1 -0
  5. package/build/lib/appium.js +677 -449
  6. package/build/lib/appium.js.map +1 -0
  7. package/build/lib/cli/args.d.ts +17 -0
  8. package/build/lib/cli/args.d.ts.map +1 -0
  9. package/build/lib/cli/args.js +263 -300
  10. package/build/lib/cli/args.js.map +1 -0
  11. package/build/lib/cli/driver-command.d.ts +102 -0
  12. package/build/lib/cli/driver-command.d.ts.map +1 -0
  13. package/build/lib/cli/driver-command.js +131 -81
  14. package/build/lib/cli/driver-command.js.map +1 -0
  15. package/build/lib/cli/extension-command.d.ts +402 -0
  16. package/build/lib/cli/extension-command.d.ts.map +1 -0
  17. package/build/lib/cli/extension-command.js +799 -383
  18. package/build/lib/cli/extension-command.js.map +1 -0
  19. package/build/lib/cli/extension.d.ts +23 -0
  20. package/build/lib/cli/extension.d.ts.map +1 -0
  21. package/build/lib/cli/extension.js +70 -68
  22. package/build/lib/cli/extension.js.map +1 -0
  23. package/build/lib/cli/parser.d.ts +84 -0
  24. package/build/lib/cli/parser.d.ts.map +1 -0
  25. package/build/lib/cli/parser.js +252 -148
  26. package/build/lib/cli/parser.js.map +1 -0
  27. package/build/lib/cli/plugin-command.d.ts +99 -0
  28. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  29. package/build/lib/cli/plugin-command.js +125 -81
  30. package/build/lib/cli/plugin-command.js.map +1 -0
  31. package/build/lib/cli/utils.d.ts +29 -0
  32. package/build/lib/cli/utils.d.ts.map +1 -0
  33. package/build/lib/cli/utils.js +72 -51
  34. package/build/lib/cli/utils.js.map +1 -0
  35. package/build/lib/config-file.d.ts +100 -0
  36. package/build/lib/config-file.d.ts.map +1 -0
  37. package/build/lib/config-file.js +207 -0
  38. package/build/lib/config-file.js.map +1 -0
  39. package/build/lib/config.d.ts +49 -0
  40. package/build/lib/config.d.ts.map +1 -0
  41. package/build/lib/config.js +262 -223
  42. package/build/lib/config.js.map +1 -0
  43. package/build/lib/constants.d.ts +56 -0
  44. package/build/lib/constants.d.ts.map +1 -0
  45. package/build/lib/constants.js +73 -0
  46. package/build/lib/constants.js.map +1 -0
  47. package/build/lib/extension/driver-config.d.ts +82 -0
  48. package/build/lib/extension/driver-config.d.ts.map +1 -0
  49. package/build/lib/extension/driver-config.js +210 -0
  50. package/build/lib/extension/driver-config.js.map +1 -0
  51. package/build/lib/extension/extension-config.d.ts +270 -0
  52. package/build/lib/extension/extension-config.d.ts.map +1 -0
  53. package/build/lib/extension/extension-config.js +601 -0
  54. package/build/lib/extension/extension-config.js.map +1 -0
  55. package/build/lib/extension/index.d.ts +48 -0
  56. package/build/lib/extension/index.d.ts.map +1 -0
  57. package/build/lib/extension/index.js +105 -0
  58. package/build/lib/extension/index.js.map +1 -0
  59. package/build/lib/extension/manifest-migrations.d.ts +27 -0
  60. package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
  61. package/build/lib/extension/manifest-migrations.js +134 -0
  62. package/build/lib/extension/manifest-migrations.js.map +1 -0
  63. package/build/lib/extension/manifest.d.ts +145 -0
  64. package/build/lib/extension/manifest.d.ts.map +1 -0
  65. package/build/lib/extension/manifest.js +528 -0
  66. package/build/lib/extension/manifest.js.map +1 -0
  67. package/build/lib/extension/package-changed.d.ts +11 -0
  68. package/build/lib/extension/package-changed.d.ts.map +1 -0
  69. package/build/lib/extension/package-changed.js +62 -0
  70. package/build/lib/extension/package-changed.js.map +1 -0
  71. package/build/lib/extension/plugin-config.d.ts +56 -0
  72. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  73. package/build/lib/extension/plugin-config.js +102 -0
  74. package/build/lib/extension/plugin-config.js.map +1 -0
  75. package/build/lib/grid-register.d.ts +10 -0
  76. package/build/lib/grid-register.d.ts.map +1 -0
  77. package/build/lib/grid-register.js +122 -144
  78. package/build/lib/grid-register.js.map +1 -0
  79. package/build/lib/logger.d.ts +3 -0
  80. package/build/lib/logger.d.ts.map +1 -0
  81. package/build/lib/logger.js +5 -17
  82. package/build/lib/logger.js.map +1 -0
  83. package/build/lib/logsink.d.ts +4 -0
  84. package/build/lib/logsink.d.ts.map +1 -0
  85. package/build/lib/logsink.js +189 -184
  86. package/build/lib/logsink.js.map +1 -0
  87. package/build/lib/main.d.ts +62 -0
  88. package/build/lib/main.d.ts.map +1 -0
  89. package/build/lib/main.js +406 -234
  90. package/build/lib/main.js.map +1 -0
  91. package/build/lib/schema/arg-spec.d.ts +143 -0
  92. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  93. package/build/lib/schema/arg-spec.js +164 -0
  94. package/build/lib/schema/arg-spec.js.map +1 -0
  95. package/build/lib/schema/cli-args.d.ts +19 -0
  96. package/build/lib/schema/cli-args.d.ts.map +1 -0
  97. package/build/lib/schema/cli-args.js +220 -0
  98. package/build/lib/schema/cli-args.js.map +1 -0
  99. package/build/lib/schema/cli-transformers.d.ts +5 -0
  100. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  101. package/build/lib/schema/cli-transformers.js +124 -0
  102. package/build/lib/schema/cli-transformers.js.map +1 -0
  103. package/build/lib/schema/index.d.ts +3 -0
  104. package/build/lib/schema/index.d.ts.map +1 -0
  105. package/build/lib/schema/index.js +19 -0
  106. package/build/lib/schema/index.js.map +1 -0
  107. package/build/lib/schema/keywords.d.ts +24 -0
  108. package/build/lib/schema/keywords.d.ts.map +1 -0
  109. package/build/lib/schema/keywords.js +128 -0
  110. package/build/lib/schema/keywords.js.map +1 -0
  111. package/build/lib/schema/schema.d.ts +260 -0
  112. package/build/lib/schema/schema.d.ts.map +1 -0
  113. package/build/lib/schema/schema.js +640 -0
  114. package/build/lib/schema/schema.js.map +1 -0
  115. package/build/lib/utils.d.ts +276 -0
  116. package/build/lib/utils.d.ts.map +1 -0
  117. package/build/lib/utils.js +372 -192
  118. package/build/lib/utils.js.map +1 -0
  119. package/build/types/cli.d.ts +134 -0
  120. package/build/types/cli.d.ts.map +1 -0
  121. package/build/types/cli.js +3 -0
  122. package/build/types/cli.js.map +1 -0
  123. package/build/types/index.d.ts +15 -0
  124. package/build/types/index.d.ts.map +1 -0
  125. package/build/types/index.js +19 -0
  126. package/build/types/index.js.map +1 -0
  127. package/build/types/manifest/base.d.ts +135 -0
  128. package/build/types/manifest/base.d.ts.map +1 -0
  129. package/build/types/manifest/base.js +3 -0
  130. package/build/types/manifest/base.js.map +1 -0
  131. package/build/types/manifest/index.d.ts +21 -0
  132. package/build/types/manifest/index.d.ts.map +1 -0
  133. package/build/types/manifest/index.js +42 -0
  134. package/build/types/manifest/index.js.map +1 -0
  135. package/build/types/manifest/v3.d.ts +139 -0
  136. package/build/types/manifest/v3.d.ts.map +1 -0
  137. package/build/types/manifest/v3.js +3 -0
  138. package/build/types/manifest/v3.js.map +1 -0
  139. package/build/types/manifest/v4.d.ts +139 -0
  140. package/build/types/manifest/v4.d.ts.map +1 -0
  141. package/build/types/manifest/v4.js +3 -0
  142. package/build/types/manifest/v4.js.map +1 -0
  143. package/driver.d.ts +1 -0
  144. package/driver.js +14 -0
  145. package/index.js +11 -0
  146. package/lib/appium.js +545 -188
  147. package/lib/cli/args.js +275 -407
  148. package/lib/cli/driver-command.js +132 -24
  149. package/lib/cli/extension-command.js +751 -272
  150. package/lib/cli/extension.js +38 -19
  151. package/lib/cli/parser.js +267 -95
  152. package/lib/cli/plugin-command.js +122 -22
  153. package/lib/cli/utils.js +24 -10
  154. package/lib/config-file.js +220 -0
  155. package/lib/config.js +243 -132
  156. package/lib/constants.js +79 -0
  157. package/lib/extension/driver-config.js +247 -0
  158. package/lib/extension/extension-config.js +709 -0
  159. package/lib/extension/index.js +116 -0
  160. package/lib/extension/manifest-migrations.js +136 -0
  161. package/lib/extension/manifest.js +580 -0
  162. package/lib/extension/package-changed.js +64 -0
  163. package/lib/extension/plugin-config.js +112 -0
  164. package/lib/grid-register.js +49 -35
  165. package/lib/logger.js +1 -2
  166. package/lib/logsink.js +59 -36
  167. package/lib/main.js +392 -104
  168. package/lib/schema/arg-spec.js +229 -0
  169. package/lib/schema/cli-args.js +241 -0
  170. package/lib/schema/cli-transformers.js +119 -0
  171. package/lib/schema/index.js +2 -0
  172. package/lib/schema/keywords.js +136 -0
  173. package/lib/schema/schema.js +725 -0
  174. package/lib/utils.js +310 -89
  175. package/package.json +84 -84
  176. package/plugin.d.ts +1 -0
  177. package/plugin.js +13 -0
  178. package/scripts/autoinstall-extensions.js +243 -0
  179. package/support.d.ts +1 -0
  180. package/support.js +13 -0
  181. package/tsconfig.json +25 -0
  182. package/types/cli.ts +193 -0
  183. package/types/index.ts +20 -0
  184. package/types/manifest/README.md +30 -0
  185. package/types/manifest/base.ts +158 -0
  186. package/types/manifest/index.ts +28 -0
  187. package/types/manifest/v3.ts +161 -0
  188. package/types/manifest/v4.ts +161 -0
  189. package/CHANGELOG.md +0 -3669
  190. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  191. package/build/lib/cli/argparse-actions.js +0 -104
  192. package/build/lib/cli/npm.js +0 -207
  193. package/build/lib/cli/parser-helpers.js +0 -93
  194. package/build/lib/driver-config.js +0 -77
  195. package/build/lib/drivers.js +0 -99
  196. package/build/lib/extension-config.js +0 -253
  197. package/build/lib/plugin-config.js +0 -59
  198. package/build/lib/plugins.js +0 -16
  199. package/build/postinstall.js +0 -90
  200. package/lib/cli/argparse-actions.js +0 -77
  201. package/lib/cli/npm.js +0 -183
  202. package/lib/cli/parser-helpers.js +0 -91
  203. package/lib/driver-config.js +0 -46
  204. package/lib/drivers.js +0 -84
  205. package/lib/extension-config.js +0 -209
  206. package/lib/plugin-config.js +0 -34
  207. package/lib/plugins.js +0 -11
  208. package/postinstall.js +0 -71
@@ -1,155 +1,259 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.getParser = getParser;
9
- exports.getDefaultServerArgs = getDefaultServerArgs;
10
- exports.default = void 0;
11
-
12
- require("source-map-support/register");
13
-
14
- var _path = _interopRequireDefault(require("path"));
15
-
16
- var _lodash = _interopRequireDefault(require("lodash"));
17
-
18
- var _argparse = require("argparse");
19
-
20
- var _args = require("./args");
21
-
22
- var _extensionConfig = require("../extension-config");
23
-
24
- var _utils = require("../utils");
25
-
26
- function makeDebugParser(parser) {
27
- parser.exit = (status, message = undefined) => {
28
- throw new Error(message);
29
- };
30
- }
31
-
32
- function getParser(debug = false) {
33
- const parser = new _argparse.ArgumentParser({
34
- add_help: true,
35
- description: 'A webdriver-compatible server for use with native and hybrid iOS and Android applications.',
36
- prog: process.argv[1] ? _path.default.basename(process.argv[1]) : 'appium'
37
- });
38
-
39
- if (debug) {
40
- makeDebugParser(parser);
41
- }
42
-
43
- parser.add_argument('-v', '--version', {
44
- action: 'version',
45
- version: require(_path.default.resolve(_utils.rootDir, 'package.json')).version
46
- });
47
- const subParsers = parser.add_subparsers({
48
- dest: 'subcommand'
49
- });
50
- const serverArgs = addServerToParser(_args.sharedArgs, subParsers, debug);
51
- parser.rawArgs = serverArgs;
52
- addExtensionsToParser(_args.sharedArgs, subParsers, debug);
53
- parser._parse_args = parser.parse_args.bind(parser);
54
-
55
- parser.parse_args = function (args, namespace) {
56
- if (_lodash.default.isUndefined(args)) {
57
- args = [...process.argv.slice(2)];
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ArgParser = exports.getParser = exports.EXTRA_ARGS = void 0;
7
+ const support_1 = require("@appium/support");
8
+ const argparse_1 = require("argparse");
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const constants_1 = require("../constants");
12
+ const schema_1 = require("../schema");
13
+ const config_1 = require("../config");
14
+ const args_1 = require("./args");
15
+ exports.EXTRA_ARGS = 'extraArgs';
16
+ /**
17
+ * If the parsed args do not contain any of these values, then we
18
+ * will automatially inject the `server` subcommand.
19
+ */
20
+ const NON_SERVER_ARGS = Object.freeze(new Set([constants_1.DRIVER_TYPE, constants_1.PLUGIN_TYPE, constants_1.SERVER_SUBCOMMAND, '-h', '--help', '-v', '--version']));
21
+ const version = support_1.fs.readPackageJsonFrom(config_1.rootDir).version;
22
+ /**
23
+ * A wrapper around `argparse`
24
+ *
25
+ * - Handles instantiation, configuration, and monkeypatching of an
26
+ * `ArgumentParser` instance for Appium server and its extensions
27
+ * - Handles error conditions, messages, and exit behavior
28
+ */
29
+ class ArgParser {
30
+ /**
31
+ * @param {boolean} [debug] - If true, throw instead of exit on error.
32
+ */
33
+ constructor(debug = false) {
34
+ const prog = process.argv[1] ? path_1.default.basename(process.argv[1]) : 'appium';
35
+ const parser = new argparse_1.ArgumentParser({
36
+ add_help: true,
37
+ description: 'A webdriver-compatible server that facilitates automation of web, mobile, and other types of apps across various platforms.',
38
+ prog,
39
+ });
40
+ ArgParser._patchExit(parser);
41
+ /**
42
+ * Program name (typically `appium`)
43
+ * @type {string}
44
+ */
45
+ this.prog = prog;
46
+ /**
47
+ * If `true`, throw an error on parse failure instead of printing help
48
+ * @type {boolean}
49
+ */
50
+ this.debug = debug;
51
+ /**
52
+ * Wrapped `ArgumentParser` instance
53
+ * @type {ArgumentParser}
54
+ */
55
+ this.parser = parser;
56
+ parser.add_argument('-v', '--version', {
57
+ action: 'version',
58
+ version,
59
+ });
60
+ const subParsers = parser.add_subparsers({ dest: 'subcommand' });
61
+ // add the 'server' subcommand, and store the raw arguments on the parser
62
+ // object as a way for other parts of the code to work with the arguments
63
+ // conceptually rather than just through argparse
64
+ const serverArgs = ArgParser._addServerToParser(subParsers);
65
+ this.rawArgs = serverArgs;
66
+ // add the 'driver' and 'plugin' subcommands
67
+ ArgParser._addExtensionCommandsToParser(subParsers);
68
+ // backwards compatibility / drop-in wrapper
69
+ /**
70
+ * @type {ArgParser['parseArgs']}
71
+ */
72
+ this.parse_args = this.parseArgs;
58
73
  }
59
-
60
- if (!_lodash.default.includes([_extensionConfig.DRIVER_TYPE, _extensionConfig.PLUGIN_TYPE, 'server', '-h', '--help', '-v', '--version'], args[0])) {
61
- args.splice(0, 0, 'server');
74
+ /**
75
+ * Parse arguments from the command line.
76
+ *
77
+ * If no subcommand is passed in, this method will inject the `server` subcommand.
78
+ *
79
+ * `ArgParser.prototype.parse_args` is an alias of this method.
80
+ * @template {import('appium/types').CliCommand} [Cmd=import('appium/types').CliCommandServer]
81
+ * @param {string[]} [args] - Array of arguments, ostensibly from `process.argv`. Gathers args from `process.argv` if not provided.
82
+ * @returns {import('appium/types').Args<Cmd>} - The parsed arguments
83
+ */
84
+ parseArgs(args = process.argv.slice(2)) {
85
+ if (!NON_SERVER_ARGS.has(args[0])) {
86
+ args.unshift(constants_1.SERVER_SUBCOMMAND);
87
+ }
88
+ try {
89
+ const parsed = this.parser.parse_known_args(args);
90
+ const [knownArgs, unknownArgs] = parsed;
91
+ // XXX: you'd think that argparse, when given an alias for a subcommand,
92
+ // would set this value to the original subcommand name, but it doesn't.
93
+ if (knownArgs?.driverCommand === 'ls') {
94
+ knownArgs.driverCommand = 'list';
95
+ }
96
+ else if (knownArgs?.pluginCommand === 'ls') {
97
+ knownArgs.pluginCommand = 'list';
98
+ }
99
+ if (unknownArgs?.length &&
100
+ (knownArgs.driverCommand === 'run' || knownArgs.pluginCommand === 'run')) {
101
+ return ArgParser._transformParsedArgs(knownArgs, unknownArgs);
102
+ }
103
+ else if (unknownArgs?.length) {
104
+ throw new Error(`[ERROR] Unrecognized arguments: ${unknownArgs.join(' ')}`);
105
+ }
106
+ return ArgParser._transformParsedArgs(knownArgs);
107
+ }
108
+ catch (err) {
109
+ if (this.debug) {
110
+ throw err;
111
+ }
112
+ // this isn't tested via unit tests (we use `debug: true`) so may escape coverage.
113
+ /* istanbul ignore next */
114
+ {
115
+ // eslint-disable-next-line no-console
116
+ console.error(); // need an extra space since argparse prints usage.
117
+ // eslint-disable-next-line no-console
118
+ console.error(err.message);
119
+ process.exit(1);
120
+ }
121
+ }
62
122
  }
63
-
64
- return this._parse_args(args, namespace);
65
- }.bind(parser);
66
-
67
- return parser;
68
- }
69
-
70
- function addServerToParser(sharedArgs, subParsers, debug = false) {
71
- const serverParser = subParsers.add_parser('server', {
72
- add_help: true,
73
- help: 'Run an Appium server'
74
- });
75
-
76
- if (debug) {
77
- makeDebugParser(serverParser);
78
- }
79
-
80
- for (const [flagsOrNames, opts] of [...sharedArgs, ..._args.serverArgs]) {
81
- serverParser.add_argument(...flagsOrNames, { ...opts
82
- });
83
- }
84
-
85
- return _args.serverArgs;
86
- }
87
-
88
- function getDefaultServerArgs() {
89
- let defaults = {};
90
-
91
- for (let [, arg] of _args.serverArgs) {
92
- defaults[arg.dest] = arg.default;
93
- }
94
-
95
- return defaults;
96
- }
97
-
98
- function addExtensionsToParser(sharedArgs, subParsers, debug = false) {
99
- for (const type of [_extensionConfig.DRIVER_TYPE, _extensionConfig.PLUGIN_TYPE]) {
100
- const extParser = subParsers.add_parser(type, {
101
- add_help: true,
102
- help: `Access the ${type} management CLI commands`
103
- });
104
-
105
- if (debug) {
106
- makeDebugParser(extParser);
123
+ /**
124
+ * Given an object full of arguments as returned by `argparser.parse_args`,
125
+ * expand the ones for extensions into a nested object structure and rename
126
+ * keys to match the intended destination.
127
+ *
128
+ * E.g., `{'driver-foo-bar': baz}` becomes `{driver: {foo: {bar: 'baz'}}}`
129
+ * @param {object} args
130
+ * @param {string[]} [unknownArgs]
131
+ * @returns {object}
132
+ */
133
+ static _transformParsedArgs(args, unknownArgs = []) {
134
+ const result = lodash_1.default.reduce(args, (unpacked, value, key) => {
135
+ if (!lodash_1.default.isUndefined(value) && (0, schema_1.hasArgSpec)(key)) {
136
+ const { dest } = /** @type {import('../schema/arg-spec').ArgSpec} */ ((0, schema_1.getArgSpec)(key));
137
+ lodash_1.default.set(unpacked, dest, value);
138
+ }
139
+ else {
140
+ // this could be anything that _isn't_ a server arg
141
+ unpacked[key] = value;
142
+ }
143
+ return unpacked;
144
+ }, {});
145
+ result[exports.EXTRA_ARGS] = unknownArgs;
146
+ return result;
147
+ }
148
+ /**
149
+ * Patches the `exit()` method of the parser to throw an error, so we can handle it manually.
150
+ * @param {ArgumentParser} parser
151
+ */
152
+ static _patchExit(parser) {
153
+ parser.exit = (code, msg) => {
154
+ if (code) {
155
+ throw new Error(msg);
156
+ }
157
+ process.exit();
158
+ };
107
159
  }
108
-
109
- const extSubParsers = extParser.add_subparsers({
110
- dest: `${type}Command`
111
- });
112
- const parserSpecs = [{
113
- command: 'list',
114
- args: _args.extensionArgs[type].list,
115
- help: `List available and installed ${type}s`
116
- }, {
117
- command: 'install',
118
- args: _args.extensionArgs[type].install,
119
- help: `Install a ${type}`
120
- }, {
121
- command: 'uninstall',
122
- args: _args.extensionArgs[type].uninstall,
123
- help: `Uninstall a ${type}`
124
- }, {
125
- command: 'update',
126
- args: _args.extensionArgs[type].update,
127
- help: `Update installed ${type}s to the latest version`
128
- }];
129
-
130
- for (const {
131
- command,
132
- args,
133
- help
134
- } of parserSpecs) {
135
- const parser = extSubParsers.add_parser(command, {
136
- help
137
- });
138
-
139
- if (debug) {
140
- makeDebugParser(parser);
141
- }
142
-
143
- for (const [flagsOrNames, opts] of [...sharedArgs, ...args]) {
144
- parser.add_argument(...flagsOrNames, { ...opts
160
+ /**
161
+ *
162
+ * @param {import('argparse').SubParser} subParser
163
+ * @returns {import('./args').ArgumentDefinitions}
164
+ */
165
+ static _addServerToParser(subParser) {
166
+ const serverParser = subParser.add_parser('server', {
167
+ add_help: true,
168
+ help: 'Run an Appium server',
145
169
  });
146
- }
170
+ ArgParser._patchExit(serverParser);
171
+ const serverArgs = (0, args_1.getServerArgs)();
172
+ for (const [flagsOrNames, opts] of serverArgs) {
173
+ // TS doesn't like the spread operator here.
174
+ // @ts-ignore
175
+ serverParser.add_argument(...flagsOrNames, { ...opts });
176
+ }
177
+ return serverArgs;
178
+ }
179
+ /**
180
+ * Adds extension sub-sub-commands to `driver`/`plugin` subcommands
181
+ * @param {import('argparse').SubParser} subParsers
182
+ */
183
+ static _addExtensionCommandsToParser(subParsers) {
184
+ for (const type of /** @type {[DriverType, PluginType]} */ ([constants_1.DRIVER_TYPE, constants_1.PLUGIN_TYPE])) {
185
+ const extParser = subParsers.add_parser(type, {
186
+ add_help: true,
187
+ help: `Access the ${type} management CLI commands`,
188
+ });
189
+ ArgParser._patchExit(extParser);
190
+ const extSubParsers = extParser.add_subparsers({
191
+ dest: `${type}Command`,
192
+ });
193
+ const extensionArgs = (0, args_1.getExtensionArgs)();
194
+ /**
195
+ * @type { {command: import('appium/types').CliExtensionSubcommand, args: import('./args').ArgumentDefinitions, help: string, aliases?: import('argparse').SubArgumentParserOptions['aliases']}[] }
196
+ */
197
+ const parserSpecs = [
198
+ {
199
+ command: 'list',
200
+ args: extensionArgs[type].list,
201
+ help: `List available and installed ${type}s`,
202
+ aliases: ['ls'],
203
+ },
204
+ {
205
+ command: 'install',
206
+ args: extensionArgs[type].install,
207
+ help: `Install a ${type}`,
208
+ },
209
+ {
210
+ command: 'uninstall',
211
+ args: extensionArgs[type].uninstall,
212
+ help: `Uninstall a ${type}`,
213
+ },
214
+ {
215
+ command: 'update',
216
+ args: extensionArgs[type].update,
217
+ help: `Update installed ${type}s to the latest version`,
218
+ },
219
+ {
220
+ command: 'run',
221
+ args: extensionArgs[type].run,
222
+ help: `Run a script (defined inside the ${type}'s package.json under the ` +
223
+ `“scripts” field inside the “appium” field) from an installed ${type}`,
224
+ },
225
+ ];
226
+ for (const { command, args, help, aliases } of parserSpecs) {
227
+ const parser = extSubParsers.add_parser(command, { help, aliases: aliases ?? [] });
228
+ ArgParser._patchExit(parser);
229
+ for (const [flagsOrNames, opts] of args) {
230
+ // add_argument mutates params so make sure to send in copies instead
231
+ if (flagsOrNames.length === 2) {
232
+ parser.add_argument(flagsOrNames[0], flagsOrNames[1], { ...opts });
233
+ }
234
+ else {
235
+ parser.add_argument(flagsOrNames[0], { ...opts });
236
+ }
237
+ }
238
+ }
239
+ }
147
240
  }
148
- }
149
241
  }
150
-
151
- var _default = getParser;
152
- exports.default = _default;require('source-map-support').install();
153
-
154
-
155
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLmpzIl0sIm5hbWVzIjpbIm1ha2VEZWJ1Z1BhcnNlciIsInBhcnNlciIsImV4aXQiLCJzdGF0dXMiLCJtZXNzYWdlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJnZXRQYXJzZXIiLCJkZWJ1ZyIsIkFyZ3VtZW50UGFyc2VyIiwiYWRkX2hlbHAiLCJkZXNjcmlwdGlvbiIsInByb2ciLCJwcm9jZXNzIiwiYXJndiIsInBhdGgiLCJiYXNlbmFtZSIsImFkZF9hcmd1bWVudCIsImFjdGlvbiIsInZlcnNpb24iLCJyZXF1aXJlIiwicmVzb2x2ZSIsInJvb3REaXIiLCJzdWJQYXJzZXJzIiwiYWRkX3N1YnBhcnNlcnMiLCJkZXN0Iiwic2VydmVyQXJncyIsImFkZFNlcnZlclRvUGFyc2VyIiwic2hhcmVkQXJncyIsInJhd0FyZ3MiLCJhZGRFeHRlbnNpb25zVG9QYXJzZXIiLCJfcGFyc2VfYXJncyIsInBhcnNlX2FyZ3MiLCJiaW5kIiwiYXJncyIsIm5hbWVzcGFjZSIsIl8iLCJpc1VuZGVmaW5lZCIsInNsaWNlIiwiaW5jbHVkZXMiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwic3BsaWNlIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwiZ2V0RGVmYXVsdFNlcnZlckFyZ3MiLCJkZWZhdWx0cyIsImFyZyIsImRlZmF1bHQiLCJ0eXBlIiwiZXh0UGFyc2VyIiwiZXh0U3ViUGFyc2VycyIsInBhcnNlclNwZWNzIiwiY29tbWFuZCIsImV4dGVuc2lvbkFyZ3MiLCJsaXN0IiwiaW5zdGFsbCIsInVuaW5zdGFsbCIsInVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLFNBQVNBLGVBQVQsQ0FBMEJDLE1BQTFCLEVBQWtDO0FBQ2hDQSxFQUFBQSxNQUFNLENBQUNDLElBQVAsR0FBYyxDQUFDQyxNQUFELEVBQVNDLE9BQU8sR0FBR0MsU0FBbkIsS0FBaUM7QUFDN0MsVUFBTSxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBTjtBQUNELEdBRkQ7QUFHRDs7QUFFRCxTQUFTRyxTQUFULENBQW9CQyxLQUFLLEdBQUcsS0FBNUIsRUFBbUM7QUFDakMsUUFBTVAsTUFBTSxHQUFHLElBQUlRLHdCQUFKLENBQW1CO0FBQ2hDQyxJQUFBQSxRQUFRLEVBQUUsSUFEc0I7QUFFaENDLElBQUFBLFdBQVcsRUFBRSw0RkFGbUI7QUFHaENDLElBQUFBLElBQUksRUFBRUMsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYixJQUFrQkMsY0FBS0MsUUFBTCxDQUFjSCxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiLENBQWQsQ0FBbEIsR0FBbUQ7QUFIekIsR0FBbkIsQ0FBZjs7QUFLQSxNQUFJTixLQUFKLEVBQVc7QUFDVFIsSUFBQUEsZUFBZSxDQUFDQyxNQUFELENBQWY7QUFDRDs7QUFDREEsRUFBQUEsTUFBTSxDQUFDZ0IsWUFBUCxDQUFvQixJQUFwQixFQUEwQixXQUExQixFQUF1QztBQUNyQ0MsSUFBQUEsTUFBTSxFQUFFLFNBRDZCO0FBRXJDQyxJQUFBQSxPQUFPLEVBQUVDLE9BQU8sQ0FBQ0wsY0FBS00sT0FBTCxDQUFhQyxjQUFiLEVBQXNCLGNBQXRCLENBQUQsQ0FBUCxDQUErQ0g7QUFGbkIsR0FBdkM7QUFJQSxRQUFNSSxVQUFVLEdBQUd0QixNQUFNLENBQUN1QixjQUFQLENBQXNCO0FBQUNDLElBQUFBLElBQUksRUFBRTtBQUFQLEdBQXRCLENBQW5CO0FBS0EsUUFBTUMsVUFBVSxHQUFHQyxpQkFBaUIsQ0FBQ0MsZ0JBQUQsRUFBYUwsVUFBYixFQUF5QmYsS0FBekIsQ0FBcEM7QUFDQVAsRUFBQUEsTUFBTSxDQUFDNEIsT0FBUCxHQUFpQkgsVUFBakI7QUFHQUksRUFBQUEscUJBQXFCLENBQUNGLGdCQUFELEVBQWFMLFVBQWIsRUFBeUJmLEtBQXpCLENBQXJCO0FBSUFQLEVBQUFBLE1BQU0sQ0FBQzhCLFdBQVAsR0FBcUI5QixNQUFNLENBQUMrQixVQUFQLENBQWtCQyxJQUFsQixDQUF1QmhDLE1BQXZCLENBQXJCOztBQUNBQSxFQUFBQSxNQUFNLENBQUMrQixVQUFQLEdBQW9CLFVBQVVFLElBQVYsRUFBZ0JDLFNBQWhCLEVBQTJCO0FBQzdDLFFBQUlDLGdCQUFFQyxXQUFGLENBQWNILElBQWQsQ0FBSixFQUF5QjtBQUN2QkEsTUFBQUEsSUFBSSxHQUFHLENBQUMsR0FBR3JCLE9BQU8sQ0FBQ0MsSUFBUixDQUFhd0IsS0FBYixDQUFtQixDQUFuQixDQUFKLENBQVA7QUFDRDs7QUFDRCxRQUFJLENBQUNGLGdCQUFFRyxRQUFGLENBQVcsQ0FBQ0MsNEJBQUQsRUFBY0MsNEJBQWQsRUFBMkIsUUFBM0IsRUFBcUMsSUFBckMsRUFBMkMsUUFBM0MsRUFBcUQsSUFBckQsRUFBMkQsV0FBM0QsQ0FBWCxFQUFvRlAsSUFBSSxDQUFDLENBQUQsQ0FBeEYsQ0FBTCxFQUFtRztBQUNqR0EsTUFBQUEsSUFBSSxDQUFDUSxNQUFMLENBQVksQ0FBWixFQUFlLENBQWYsRUFBa0IsUUFBbEI7QUFDRDs7QUFDRCxXQUFPLEtBQUtYLFdBQUwsQ0FBaUJHLElBQWpCLEVBQXVCQyxTQUF2QixDQUFQO0FBQ0QsR0FSbUIsQ0FRbEJGLElBUmtCLENBUWJoQyxNQVJhLENBQXBCOztBQVNBLFNBQU9BLE1BQVA7QUFDRDs7QUFFRCxTQUFTMEIsaUJBQVQsQ0FBNEJDLFVBQTVCLEVBQXdDTCxVQUF4QyxFQUFvRGYsS0FBSyxHQUFHLEtBQTVELEVBQW1FO0FBQ2pFLFFBQU1tQyxZQUFZLEdBQUdwQixVQUFVLENBQUNxQixVQUFYLENBQXNCLFFBQXRCLEVBQWdDO0FBQ25EbEMsSUFBQUEsUUFBUSxFQUFFLElBRHlDO0FBRW5EbUMsSUFBQUEsSUFBSSxFQUFFO0FBRjZDLEdBQWhDLENBQXJCOztBQUtBLE1BQUlyQyxLQUFKLEVBQVc7QUFDVFIsSUFBQUEsZUFBZSxDQUFDMkMsWUFBRCxDQUFmO0FBQ0Q7O0FBRUQsT0FBSyxNQUFNLENBQUNHLFlBQUQsRUFBZUMsSUFBZixDQUFYLElBQW1DLENBQUMsR0FBR25CLFVBQUosRUFBZ0IsR0FBR0YsZ0JBQW5CLENBQW5DLEVBQW1FO0FBRWpFaUIsSUFBQUEsWUFBWSxDQUFDMUIsWUFBYixDQUEwQixHQUFHNkIsWUFBN0IsRUFBMkMsRUFBQyxHQUFHQztBQUFKLEtBQTNDO0FBQ0Q7O0FBRUQsU0FBT3JCLGdCQUFQO0FBQ0Q7O0FBRUQsU0FBU3NCLG9CQUFULEdBQWlDO0FBQy9CLE1BQUlDLFFBQVEsR0FBRyxFQUFmOztBQUNBLE9BQUssSUFBSSxHQUFHQyxHQUFILENBQVQsSUFBb0J4QixnQkFBcEIsRUFBZ0M7QUFDOUJ1QixJQUFBQSxRQUFRLENBQUNDLEdBQUcsQ0FBQ3pCLElBQUwsQ0FBUixHQUFxQnlCLEdBQUcsQ0FBQ0MsT0FBekI7QUFDRDs7QUFDRCxTQUFPRixRQUFQO0FBQ0Q7O0FBRUQsU0FBU25CLHFCQUFULENBQWdDRixVQUFoQyxFQUE0Q0wsVUFBNUMsRUFBd0RmLEtBQUssR0FBRyxLQUFoRSxFQUF1RTtBQUNyRSxPQUFLLE1BQU00QyxJQUFYLElBQW1CLENBQUNaLDRCQUFELEVBQWNDLDRCQUFkLENBQW5CLEVBQStDO0FBQzdDLFVBQU1ZLFNBQVMsR0FBRzlCLFVBQVUsQ0FBQ3FCLFVBQVgsQ0FBc0JRLElBQXRCLEVBQTRCO0FBQzVDMUMsTUFBQUEsUUFBUSxFQUFFLElBRGtDO0FBRTVDbUMsTUFBQUEsSUFBSSxFQUFHLGNBQWFPLElBQUs7QUFGbUIsS0FBNUIsQ0FBbEI7O0FBSUEsUUFBSTVDLEtBQUosRUFBVztBQUNUUixNQUFBQSxlQUFlLENBQUNxRCxTQUFELENBQWY7QUFDRDs7QUFDRCxVQUFNQyxhQUFhLEdBQUdELFNBQVMsQ0FBQzdCLGNBQVYsQ0FBeUI7QUFDN0NDLE1BQUFBLElBQUksRUFBRyxHQUFFMkIsSUFBSztBQUQrQixLQUF6QixDQUF0QjtBQUdBLFVBQU1HLFdBQVcsR0FBRyxDQUNsQjtBQUFDQyxNQUFBQSxPQUFPLEVBQUUsTUFBVjtBQUFrQnRCLE1BQUFBLElBQUksRUFBRXVCLG9CQUFjTCxJQUFkLEVBQW9CTSxJQUE1QztBQUNDYixNQUFBQSxJQUFJLEVBQUcsZ0NBQStCTyxJQUFLO0FBRDVDLEtBRGtCLEVBR2xCO0FBQUNJLE1BQUFBLE9BQU8sRUFBRSxTQUFWO0FBQXFCdEIsTUFBQUEsSUFBSSxFQUFFdUIsb0JBQWNMLElBQWQsRUFBb0JPLE9BQS9DO0FBQ0NkLE1BQUFBLElBQUksRUFBRyxhQUFZTyxJQUFLO0FBRHpCLEtBSGtCLEVBS2xCO0FBQUNJLE1BQUFBLE9BQU8sRUFBRSxXQUFWO0FBQXVCdEIsTUFBQUEsSUFBSSxFQUFFdUIsb0JBQWNMLElBQWQsRUFBb0JRLFNBQWpEO0FBQ0NmLE1BQUFBLElBQUksRUFBRyxlQUFjTyxJQUFLO0FBRDNCLEtBTGtCLEVBT2xCO0FBQUNJLE1BQUFBLE9BQU8sRUFBRSxRQUFWO0FBQW9CdEIsTUFBQUEsSUFBSSxFQUFFdUIsb0JBQWNMLElBQWQsRUFBb0JTLE1BQTlDO0FBQ0NoQixNQUFBQSxJQUFJLEVBQUcsb0JBQW1CTyxJQUFLO0FBRGhDLEtBUGtCLENBQXBCOztBQVdBLFNBQUssTUFBTTtBQUFDSSxNQUFBQSxPQUFEO0FBQVV0QixNQUFBQSxJQUFWO0FBQWdCVyxNQUFBQTtBQUFoQixLQUFYLElBQW9DVSxXQUFwQyxFQUFpRDtBQUMvQyxZQUFNdEQsTUFBTSxHQUFHcUQsYUFBYSxDQUFDVixVQUFkLENBQXlCWSxPQUF6QixFQUFrQztBQUFDWCxRQUFBQTtBQUFELE9BQWxDLENBQWY7O0FBQ0EsVUFBSXJDLEtBQUosRUFBVztBQUNUUixRQUFBQSxlQUFlLENBQUNDLE1BQUQsQ0FBZjtBQUNEOztBQUNELFdBQUssTUFBTSxDQUFDNkMsWUFBRCxFQUFlQyxJQUFmLENBQVgsSUFBbUMsQ0FBQyxHQUFHbkIsVUFBSixFQUFnQixHQUFHTSxJQUFuQixDQUFuQyxFQUE2RDtBQUUzRGpDLFFBQUFBLE1BQU0sQ0FBQ2dCLFlBQVAsQ0FBb0IsR0FBRzZCLFlBQXZCLEVBQXFDLEVBQUMsR0FBR0M7QUFBSixTQUFyQztBQUNEO0FBQ0Y7QUFDRjtBQUNGOztlQUVjeEMsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFyZ3VtZW50UGFyc2VyIH0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IHsgc2hhcmVkQXJncywgc2VydmVyQXJncywgZXh0ZW5zaW9uQXJncyB9IGZyb20gJy4vYXJncyc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUgfSBmcm9tICcuLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IHJvb3REaXIgfSBmcm9tICcuLi91dGlscyc7XG5cblxuZnVuY3Rpb24gbWFrZURlYnVnUGFyc2VyIChwYXJzZXIpIHtcbiAgcGFyc2VyLmV4aXQgPSAoc3RhdHVzLCBtZXNzYWdlID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQYXJzZXIgKGRlYnVnID0gZmFsc2UpIHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IEFyZ3VtZW50UGFyc2VyKHtcbiAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogJ0Egd2ViZHJpdmVyLWNvbXBhdGlibGUgc2VydmVyIGZvciB1c2Ugd2l0aCBuYXRpdmUgYW5kIGh5YnJpZCBpT1MgYW5kIEFuZHJvaWQgYXBwbGljYXRpb25zLicsXG4gICAgcHJvZzogcHJvY2Vzcy5hcmd2WzFdID8gcGF0aC5iYXNlbmFtZShwcm9jZXNzLmFyZ3ZbMV0pIDogJ2FwcGl1bScsXG4gIH0pO1xuICBpZiAoZGVidWcpIHtcbiAgICBtYWtlRGVidWdQYXJzZXIocGFyc2VyKTtcbiAgfVxuICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCB7XG4gICAgYWN0aW9uOiAndmVyc2lvbicsXG4gICAgdmVyc2lvbjogcmVxdWlyZShwYXRoLnJlc29sdmUocm9vdERpciwgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9uXG4gIH0pO1xuICBjb25zdCBzdWJQYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtkZXN0OiAnc3ViY29tbWFuZCd9KTtcblxuICAvLyBhZGQgdGhlICdzZXJ2ZXInIHN1YmNvbW1hbmQsIGFuZCBzdG9yZSB0aGUgcmF3IGFyZ3VtZW50cyBvbiB0aGUgcGFyc2VyXG4gIC8vIG9iamVjdCBhcyBhIHdheSBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgdG8gd29yayB3aXRoIHRoZSBhcmd1bWVudHNcbiAgLy8gY29uY2VwdHVhbGx5IHJhdGhlciB0aGFuIGp1c3QgdGhyb3VnaCBhcmdwYXJzZVxuICBjb25zdCBzZXJ2ZXJBcmdzID0gYWRkU2VydmVyVG9QYXJzZXIoc2hhcmVkQXJncywgc3ViUGFyc2VycywgZGVidWcpO1xuICBwYXJzZXIucmF3QXJncyA9IHNlcnZlckFyZ3M7XG5cbiAgLy8gYWRkIHRoZSAnZHJpdmVyJyBhbmQgJ3BsdWdpbicgc3ViY29tbWFuZHNcbiAgYWRkRXh0ZW5zaW9uc1RvUGFyc2VyKHNoYXJlZEFyZ3MsIHN1YlBhcnNlcnMsIGRlYnVnKTtcblxuICAvLyBtb2RpZnkgdGhlIHBhcnNlX2FyZ3MgZnVuY3Rpb24gdG8gaW5zZXJ0IHRoZSAnc2VydmVyJyBzdWJjb21tYW5kIGlmIHRoZVxuICAvLyB1c2VyIGhhc24ndCBzcGVjaWZpZWQgYSBzdWJjb21tYW5kIG9yIHRoZSBnbG9iYWwgaGVscCBjb21tYW5kXG4gIHBhcnNlci5fcGFyc2VfYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzLmJpbmQocGFyc2VyKTtcbiAgcGFyc2VyLnBhcnNlX2FyZ3MgPSBmdW5jdGlvbiAoYXJncywgbmFtZXNwYWNlKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoYXJncykpIHtcbiAgICAgIGFyZ3MgPSBbLi4ucHJvY2Vzcy5hcmd2LnNsaWNlKDIpXTtcbiAgICB9XG4gICAgaWYgKCFfLmluY2x1ZGVzKFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUsICdzZXJ2ZXInLCAnLWgnLCAnLS1oZWxwJywgJy12JywgJy0tdmVyc2lvbiddLCBhcmdzWzBdKSkge1xuICAgICAgYXJncy5zcGxpY2UoMCwgMCwgJ3NlcnZlcicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGFyc2VfYXJncyhhcmdzLCBuYW1lc3BhY2UpO1xuICB9LmJpbmQocGFyc2VyKTtcbiAgcmV0dXJuIHBhcnNlcjtcbn1cblxuZnVuY3Rpb24gYWRkU2VydmVyVG9QYXJzZXIgKHNoYXJlZEFyZ3MsIHN1YlBhcnNlcnMsIGRlYnVnID0gZmFsc2UpIHtcbiAgY29uc3Qgc2VydmVyUGFyc2VyID0gc3ViUGFyc2Vycy5hZGRfcGFyc2VyKCdzZXJ2ZXInLCB7XG4gICAgYWRkX2hlbHA6IHRydWUsXG4gICAgaGVscDogJ1J1biBhbiBBcHBpdW0gc2VydmVyJyxcbiAgfSk7XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgbWFrZURlYnVnUGFyc2VyKHNlcnZlclBhcnNlcik7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtmbGFnc09yTmFtZXMsIG9wdHNdIG9mIFsuLi5zaGFyZWRBcmdzLCAuLi5zZXJ2ZXJBcmdzXSkge1xuICAgIC8vIGFkZF9hcmd1bWVudCBtdXRhdGVzIGFyZ3VtZW50cyBzbyBtYWtlIGNvcGllc1xuICAgIHNlcnZlclBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICB9XG5cbiAgcmV0dXJuIHNlcnZlckFyZ3M7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRTZXJ2ZXJBcmdzICgpIHtcbiAgbGV0IGRlZmF1bHRzID0ge307XG4gIGZvciAobGV0IFssIGFyZ10gb2Ygc2VydmVyQXJncykge1xuICAgIGRlZmF1bHRzW2FyZy5kZXN0XSA9IGFyZy5kZWZhdWx0O1xuICB9XG4gIHJldHVybiBkZWZhdWx0cztcbn1cblxuZnVuY3Rpb24gYWRkRXh0ZW5zaW9uc1RvUGFyc2VyIChzaGFyZWRBcmdzLCBzdWJQYXJzZXJzLCBkZWJ1ZyA9IGZhbHNlKSB7XG4gIGZvciAoY29uc3QgdHlwZSBvZiBbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSkge1xuICAgIGNvbnN0IGV4dFBhcnNlciA9IHN1YlBhcnNlcnMuYWRkX3BhcnNlcih0eXBlLCB7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGhlbHA6IGBBY2Nlc3MgdGhlICR7dHlwZX0gbWFuYWdlbWVudCBDTEkgY29tbWFuZHNgLFxuICAgIH0pO1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgbWFrZURlYnVnUGFyc2VyKGV4dFBhcnNlcik7XG4gICAgfVxuICAgIGNvbnN0IGV4dFN1YlBhcnNlcnMgPSBleHRQYXJzZXIuYWRkX3N1YnBhcnNlcnMoe1xuICAgICAgZGVzdDogYCR7dHlwZX1Db21tYW5kYCxcbiAgICB9KTtcbiAgICBjb25zdCBwYXJzZXJTcGVjcyA9IFtcbiAgICAgIHtjb21tYW5kOiAnbGlzdCcsIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCxcbiAgICAgICBoZWxwOiBgTGlzdCBhdmFpbGFibGUgYW5kIGluc3RhbGxlZCAke3R5cGV9c2B9LFxuICAgICAge2NvbW1hbmQ6ICdpbnN0YWxsJywgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsLFxuICAgICAgIGhlbHA6IGBJbnN0YWxsIGEgJHt0eXBlfWB9LFxuICAgICAge2NvbW1hbmQ6ICd1bmluc3RhbGwnLCBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCxcbiAgICAgICBoZWxwOiBgVW5pbnN0YWxsIGEgJHt0eXBlfWB9LFxuICAgICAge2NvbW1hbmQ6ICd1cGRhdGUnLCBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSxcbiAgICAgICBoZWxwOiBgVXBkYXRlIGluc3RhbGxlZCAke3R5cGV9cyB0byB0aGUgbGF0ZXN0IHZlcnNpb25gfSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCB7Y29tbWFuZCwgYXJncywgaGVscH0gb2YgcGFyc2VyU3BlY3MpIHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IGV4dFN1YlBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5kLCB7aGVscH0pO1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIG1ha2VEZWJ1Z1BhcnNlcihwYXJzZXIpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBbLi4uc2hhcmVkQXJncywgLi4uYXJnc10pIHtcbiAgICAgICAgLy8gYWRkX2FyZ3VtZW50IG11dGF0ZXMgcGFyYW1zIHNvIG1ha2Ugc3VyZSB0byBzZW5kIGluIGNvcGllcyBpbnN0ZWFkXG4gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRQYXJzZXI7XG5leHBvcnQgeyBnZXRQYXJzZXIsIGdldERlZmF1bHRTZXJ2ZXJBcmdzIH07XG4iXSwiZmlsZSI6ImxpYi9jbGkvcGFyc2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
242
+ exports.ArgParser = ArgParser;
243
+ /**
244
+ * Creates a {@link ArgParser} instance; finalizes the config schema.
245
+ *
246
+ * @constructs ArgParser
247
+ * @param {boolean} [debug] - If `true`, throw instead of exit upon parsing error
248
+ * @returns {ArgParser}
249
+ */
250
+ function getParser(debug) {
251
+ (0, schema_1.finalizeSchema)();
252
+ return new ArgParser(debug);
253
+ }
254
+ exports.getParser = getParser;
255
+ /**
256
+ * @typedef {import('@appium/types').DriverType} DriverType
257
+ * @typedef {import('@appium/types').PluginType} PluginType
258
+ */
259
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../lib/cli/parser.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @extends {ExtensionCliCommand<PluginType>}
3
+ */
4
+ export default class PluginCliCommand extends ExtensionCliCommand<"plugin"> {
5
+ /**
6
+ *
7
+ * @param {import('./extension-command').ExtensionCommandOptions<PluginType>} opts
8
+ */
9
+ constructor({ config, json }: import('./extension-command').ExtensionCommandOptions<PluginType>);
10
+ /**
11
+ * Install a plugin
12
+ *
13
+ * @param {PluginInstallOpts} opts
14
+ * @returns {Promise<ExtRecord<PluginType>>}
15
+ */
16
+ install({ plugin, installType, packageName }: PluginInstallOpts): Promise<ExtRecord<PluginType>>;
17
+ /**
18
+ * Uninstall a plugin
19
+ *
20
+ * @param {PluginUninstallOpts} opts
21
+ * @returns {Promise<ExtRecord<PluginType>>}
22
+ */
23
+ uninstall({ plugin }: PluginUninstallOpts): Promise<ExtRecord<PluginType>>;
24
+ /**
25
+ * Update a plugin
26
+ *
27
+ * @param {PluginUpdateOpts} opts
28
+ * @returns {Promise<import('./extension-command').ExtensionUpdateResult>}
29
+ */
30
+ update({ plugin, unsafe }: PluginUpdateOpts): Promise<import('./extension-command').ExtensionUpdateResult>;
31
+ /**
32
+ *
33
+ * @param {PluginRunOptions} opts
34
+ * @returns {Promise<import('./extension-command').RunOutput>}
35
+ */
36
+ run({ plugin, scriptName, extraArgs }: PluginRunOptions): Promise<import('./extension-command').RunOutput>;
37
+ }
38
+ export type ExtensionType = import('@appium/types').ExtensionType;
39
+ export type PluginType = import('@appium/types').PluginType;
40
+ export type ExtRecord<ExtType extends import("@appium/types").ExtensionType> = import('appium/types').ExtRecord<ExtType>;
41
+ /**
42
+ * Options for {@linkcode PluginCliCommand.install }
43
+ */
44
+ export type PluginInstallOpts = {
45
+ /**
46
+ * - the name or spec of a plugin to install
47
+ */
48
+ plugin: string;
49
+ /**
50
+ * - how to install this plugin. One of the INSTALL_TYPES
51
+ */
52
+ installType: InstallType;
53
+ /**
54
+ * - for git/github installs, the plugin node package name
55
+ */
56
+ packageName?: string | undefined;
57
+ };
58
+ export type InstallType = import('appium/types').InstallType;
59
+ /**
60
+ * Options for {@linkcode PluginCliCommand.uninstall }
61
+ */
62
+ export type PluginUninstallOpts = {
63
+ /**
64
+ * - the name or spec of a plugin to uninstall
65
+ */
66
+ plugin: string;
67
+ };
68
+ /**
69
+ * Options for {@linkcode PluginCliCommand.update }
70
+ */
71
+ export type PluginUpdateOpts = {
72
+ /**
73
+ * - the name of the plugin to update
74
+ */
75
+ plugin: string;
76
+ /**
77
+ * - if true, will perform unsafe updates past major revision boundaries
78
+ */
79
+ unsafe: boolean;
80
+ };
81
+ /**
82
+ * Options for {@linkcode PluginCliCommand.run }.
83
+ */
84
+ export type PluginRunOptions = {
85
+ /**
86
+ * - name of the plugin to run a script from
87
+ */
88
+ plugin: string;
89
+ /**
90
+ * - name of the script to run
91
+ */
92
+ scriptName: string;
93
+ /**
94
+ * - arguments to pass to the script
95
+ */
96
+ extraArgs?: string[] | undefined;
97
+ };
98
+ import ExtensionCliCommand from "./extension-command";
99
+ //# sourceMappingURL=plugin-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/plugin-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IACE;;;OAGG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;;OAKG;IACH,8CAHW,iBAAiB,GACf,QAAQ,UAAU,UAAU,CAAC,CAAC,CAQ1C;IAED;;;;;OAKG;IACH,sBAHW,mBAAmB,GACjB,QAAQ,UAAU,UAAU,CAAC,CAAC,CAI1C;IAED;;;;;OAKG;IACH,2BAHW,gBAAgB,GACd,QAAQ,OAAO,qBAAqB,EAAE,qBAAqB,CAAC,CAIxE;IAED;;;;OAIG;IACH,uCAHW,gBAAgB,GACd,QAAQ,OAAO,qBAAqB,EAAE,SAAS,CAAC,CAS5D;CAkCF;4BAGY,OAAO,eAAe,EAAE,aAAa;yBACrC,OAAO,eAAe,EAAE,UAAU;+EAKlC,OAAO,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC;;;;;;;;YAMxC,MAAM;;;;iBACN,WAAW;;;;;;0BAKZ,OAAO,cAAc,EAAE,WAAW;;;;;;;;YAMjC,MAAM;;;;;;;;;YAMN,MAAM;;;;YACN,OAAO;;;;;;;;;YAMP,MAAM;;;;gBACN,MAAM"}