appium 2.0.0-beta.3 → 2.0.0-beta.30
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 +10 -11
- package/build/lib/appium.d.ts +215 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +238 -132
- package/build/lib/cli/args.d.ts +20 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +96 -282
- package/build/lib/cli/driver-command.d.ts +36 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +19 -12
- package/build/lib/cli/extension-command.d.ts +345 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +171 -96
- package/build/lib/cli/extension.d.ts +14 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +31 -16
- package/build/lib/cli/parser.d.ts +79 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +152 -95
- package/build/lib/cli/plugin-command.d.ts +39 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +18 -13
- package/build/lib/cli/utils.d.ts +29 -0
- package/build/lib/cli/utils.d.ts.map +1 -0
- package/build/lib/cli/utils.js +27 -3
- package/build/lib/config-file.d.ts +100 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +136 -0
- package/build/lib/config.d.ts +40 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +92 -67
- package/build/lib/constants.d.ts +48 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +60 -0
- package/build/lib/extension/driver-config.d.ts +84 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +190 -0
- package/build/lib/extension/extension-config.d.ts +170 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +297 -0
- package/build/lib/extension/index.d.ts +39 -0
- package/build/lib/extension/index.d.ts.map +1 -0
- package/build/lib/extension/index.js +77 -0
- package/build/lib/extension/manifest.d.ts +174 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +246 -0
- package/build/lib/extension/package-changed.d.ts +11 -0
- package/build/lib/extension/package-changed.d.ts.map +1 -0
- package/build/lib/extension/package-changed.js +68 -0
- package/build/lib/extension/plugin-config.d.ts +62 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +87 -0
- package/build/lib/grid-register.d.ts +10 -0
- package/build/lib/grid-register.d.ts.map +1 -0
- package/build/lib/grid-register.js +21 -25
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +4 -6
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +12 -16
- package/build/lib/main.d.ts +51 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +174 -82
- package/build/lib/schema/arg-spec.d.ts +143 -0
- package/build/lib/schema/arg-spec.d.ts.map +1 -0
- package/build/lib/schema/arg-spec.js +119 -0
- package/build/lib/schema/cli-args.d.ts +19 -0
- package/build/lib/schema/cli-args.d.ts.map +1 -0
- package/build/lib/schema/cli-args.js +180 -0
- package/build/lib/schema/cli-transformers.d.ts +5 -0
- package/build/lib/schema/cli-transformers.d.ts.map +1 -0
- package/build/lib/schema/cli-transformers.js +74 -0
- package/build/lib/schema/index.d.ts +3 -0
- package/build/lib/schema/index.d.ts.map +1 -0
- package/build/lib/schema/index.js +34 -0
- package/build/lib/schema/keywords.d.ts +24 -0
- package/build/lib/schema/keywords.d.ts.map +1 -0
- package/build/lib/schema/keywords.js +70 -0
- package/build/lib/schema/schema.d.ts +259 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +452 -0
- package/build/lib/utils.d.ts +66 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +35 -139
- package/build/tsconfig.tsbuildinfo +1 -0
- package/index.js +11 -0
- package/lib/appium-config.schema.json +278 -0
- package/lib/appium.js +398 -155
- package/lib/cli/args.js +174 -377
- package/lib/cli/driver-command.js +22 -7
- package/lib/cli/extension-command.js +372 -177
- package/lib/cli/extension.js +32 -10
- package/lib/cli/parser.js +252 -83
- package/lib/cli/plugin-command.js +19 -6
- package/lib/cli/utils.js +22 -2
- package/lib/config-file.js +223 -0
- package/lib/config.js +169 -69
- package/lib/constants.js +78 -0
- package/lib/extension/driver-config.js +249 -0
- package/lib/extension/extension-config.js +458 -0
- package/lib/extension/index.js +102 -0
- package/lib/extension/manifest.js +486 -0
- package/lib/extension/package-changed.js +63 -0
- package/lib/extension/plugin-config.js +113 -0
- package/lib/grid-register.js +25 -22
- package/lib/logger.js +1 -1
- package/lib/logsink.js +14 -7
- package/lib/main.js +233 -83
- package/lib/schema/arg-spec.js +232 -0
- package/lib/schema/cli-args.js +261 -0
- package/lib/schema/cli-transformers.js +122 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +134 -0
- package/lib/schema/schema.js +734 -0
- package/lib/utils.js +85 -129
- package/package.json +62 -85
- package/scripts/postinstall.js +71 -0
- package/types/appium-manifest.d.ts +61 -0
- package/types/cli.d.ts +134 -0
- package/types/extension.d.ts +56 -0
- package/types/external-manifest.d.ts +58 -0
- package/types/index.d.ts +7 -0
- package/CHANGELOG.md +0 -3515
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/npm.js +0 -206
- package/build/lib/cli/parser-helpers.js +0 -82
- package/build/lib/driver-config.js +0 -77
- package/build/lib/drivers.js +0 -96
- package/build/lib/extension-config.js +0 -251
- package/build/lib/plugin-config.js +0 -59
- package/build/lib/plugins.js +0 -14
- package/lib/cli/npm.js +0 -183
- package/lib/cli/parser-helpers.js +0 -79
- package/lib/driver-config.js +0 -46
- package/lib/drivers.js +0 -81
- package/lib/extension-config.js +0 -208
- package/lib/plugin-config.js +0 -34
- package/lib/plugins.js +0 -10
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alias
|
|
3
|
+
*/
|
|
4
|
+
export type ExtensionType = import('../extension/manifest').ExtensionType;
|
|
5
|
+
/**
|
|
6
|
+
* A tuple of argument aliases and argument options
|
|
7
|
+
*/
|
|
8
|
+
export type ArgumentDefinitions = Map<string[], import('argparse').ArgumentOptions>;
|
|
9
|
+
/**
|
|
10
|
+
* Derives the options for the `server` command from the schema, and adds the arguments
|
|
11
|
+
* which are disallowed in the config file.
|
|
12
|
+
* @returns {ArgumentDefinitions}
|
|
13
|
+
*/
|
|
14
|
+
export function getServerArgs(): ArgumentDefinitions;
|
|
15
|
+
/**
|
|
16
|
+
* Builds a Record of extension types to a Record of subcommands to their argument definitions
|
|
17
|
+
*/
|
|
18
|
+
export const getExtensionArgs: (() => Record<import("../../types").ExtensionType, Record<import("../../types/cli").CliExtensionSubcommand, ArgumentDefinitions>>) & _.MemoizedFunction;
|
|
19
|
+
import _ from "lodash";
|
|
20
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../lib/cli/args.js"],"names":[],"mappings":";;;4BAyOa,OAAO,uBAAuB,EAAE,aAAa;;;;kCAK7C,IAAI,MAAM,EAAE,EAAC,OAAO,UAAU,EAAE,eAAe,CAAC;AAtE7D;;;;GAIG;AACH,qDAKC;AApJD;;GAEG;AACH,uLAYG"}
|
package/build/lib/cli/args.js
CHANGED
|
@@ -1,330 +1,144 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.
|
|
8
|
+
exports.getExtensionArgs = void 0;
|
|
9
|
+
exports.getServerArgs = getServerArgs;
|
|
7
10
|
|
|
8
11
|
require("source-map-support/register");
|
|
9
12
|
|
|
10
|
-
var
|
|
13
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
14
|
+
|
|
15
|
+
var _constants = require("../constants");
|
|
11
16
|
|
|
12
|
-
var
|
|
17
|
+
var _extensionConfig = require("../extension/extension-config");
|
|
13
18
|
|
|
14
|
-
var
|
|
19
|
+
var _cliArgs = require("../schema/cli-args");
|
|
15
20
|
|
|
16
21
|
const DRIVER_EXAMPLE = 'xcuitest';
|
|
17
22
|
const PLUGIN_EXAMPLE = 'find_by_image';
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
required: false,
|
|
22
|
-
defaultValue: process.env.APPIUM_HOME || _extensionConfig.DEFAULT_APPIUM_HOME,
|
|
23
|
-
help: 'The path to the directory where Appium will keep installed drivers, plugins, and any other metadata necessary for its operation',
|
|
24
|
-
dest: 'appiumHome'
|
|
25
|
-
}], [['--log-filters'], {
|
|
26
|
-
dest: 'logFilters',
|
|
27
|
-
defaultValue: null,
|
|
28
|
-
required: false,
|
|
29
|
-
help: 'Set the full path to a JSON file containing one or more log filtering rules',
|
|
30
|
-
example: '/home/rules.json'
|
|
31
|
-
}]];
|
|
32
|
-
exports.sharedArgs = sharedArgs;
|
|
33
|
-
const serverArgs = [[['--shell'], {
|
|
34
|
-
required: false,
|
|
35
|
-
defaultValue: null,
|
|
36
|
-
help: 'Enter REPL mode',
|
|
37
|
-
nargs: 0,
|
|
38
|
-
dest: 'shell'
|
|
39
|
-
}], [['--plugins'], {
|
|
40
|
-
required: false,
|
|
41
|
-
defaultValue: [],
|
|
42
|
-
help: `A comma-separated list of installed plugin names that should be active for this ` + `server. To activate all plugins, you can use the single string "${USE_ALL_PLUGINS}" ` + `as the value (e.g. --plugins=${USE_ALL_PLUGINS})`,
|
|
43
|
-
type: _parserHelpers.parsePluginNames,
|
|
44
|
-
dest: 'plugins'
|
|
45
|
-
}], [['--allow-cors'], {
|
|
46
|
-
required: false,
|
|
47
|
-
defaultValue: false,
|
|
48
|
-
action: 'storeTrue',
|
|
49
|
-
help: 'Whether the Appium server should allow web browser connections from any host',
|
|
50
|
-
nargs: 0,
|
|
51
|
-
dest: 'allowCors'
|
|
52
|
-
}], [['--reboot'], {
|
|
53
|
-
defaultValue: false,
|
|
54
|
-
dest: 'reboot',
|
|
55
|
-
action: 'storeTrue',
|
|
56
|
-
required: false,
|
|
57
|
-
help: '(Android-only) reboot emulator after each session and kill it at the end',
|
|
58
|
-
nargs: 0
|
|
59
|
-
}], [['-a', '--address'], {
|
|
60
|
-
defaultValue: '0.0.0.0',
|
|
61
|
-
required: false,
|
|
62
|
-
example: '0.0.0.0',
|
|
63
|
-
help: 'IP Address to listen on',
|
|
64
|
-
dest: 'address'
|
|
65
|
-
}], [['-p', '--port'], {
|
|
66
|
-
defaultValue: 4723,
|
|
67
|
-
required: false,
|
|
68
|
-
type: 'int',
|
|
69
|
-
example: '4723',
|
|
70
|
-
help: 'port to listen on',
|
|
71
|
-
dest: 'port'
|
|
72
|
-
}], [['-pa', '--base-path'], {
|
|
73
|
-
required: false,
|
|
74
|
-
defaultValue: _appiumBaseDriver.DEFAULT_BASE_PATH,
|
|
75
|
-
dest: 'basePath',
|
|
76
|
-
example: '/path/prefix',
|
|
77
|
-
help: 'Base path to use as the prefix for all webdriver routes running' + `on this server (default: ${_appiumBaseDriver.DEFAULT_BASE_PATH})`
|
|
78
|
-
}], [['-ca', '--callback-address'], {
|
|
79
|
-
required: false,
|
|
80
|
-
dest: 'callbackAddress',
|
|
81
|
-
defaultValue: null,
|
|
82
|
-
example: '127.0.0.1',
|
|
83
|
-
help: 'callback IP Address (default: same as --address)'
|
|
84
|
-
}], [['-cp', '--callback-port'], {
|
|
85
|
-
required: false,
|
|
86
|
-
dest: 'callbackPort',
|
|
87
|
-
defaultValue: null,
|
|
88
|
-
type: 'int',
|
|
89
|
-
example: '4723',
|
|
90
|
-
help: 'callback port (default: same as port)'
|
|
91
|
-
}], [['--session-override'], {
|
|
92
|
-
defaultValue: false,
|
|
93
|
-
dest: 'sessionOverride',
|
|
94
|
-
action: 'storeTrue',
|
|
95
|
-
required: false,
|
|
96
|
-
help: 'Enables session override (clobbering)',
|
|
97
|
-
nargs: 0
|
|
98
|
-
}], [['-g', '--log'], {
|
|
99
|
-
defaultValue: null,
|
|
100
|
-
dest: 'logFile',
|
|
101
|
-
required: false,
|
|
102
|
-
example: '/path/to/appium.log',
|
|
103
|
-
help: 'Also send log output to this file'
|
|
104
|
-
}], [['--log-level'], {
|
|
105
|
-
choices: ['info', 'info:debug', 'info:info', 'info:warn', 'info:error', 'warn', 'warn:debug', 'warn:info', 'warn:warn', 'warn:error', 'error', 'error:debug', 'error:info', 'error:warn', 'error:error', 'debug', 'debug:debug', 'debug:info', 'debug:warn', 'debug:error'],
|
|
106
|
-
defaultValue: 'debug',
|
|
107
|
-
dest: 'loglevel',
|
|
108
|
-
required: false,
|
|
109
|
-
example: 'debug',
|
|
110
|
-
help: 'log level; default (console[:file]): debug[:debug]'
|
|
111
|
-
}], [['--log-timestamp'], {
|
|
112
|
-
defaultValue: false,
|
|
113
|
-
required: false,
|
|
114
|
-
help: 'Show timestamps in console output',
|
|
115
|
-
nargs: 0,
|
|
116
|
-
action: 'storeTrue',
|
|
117
|
-
dest: 'logTimestamp'
|
|
118
|
-
}], [['--local-timezone'], {
|
|
119
|
-
defaultValue: false,
|
|
120
|
-
required: false,
|
|
121
|
-
help: 'Use local timezone for timestamps',
|
|
122
|
-
nargs: 0,
|
|
123
|
-
action: 'storeTrue',
|
|
124
|
-
dest: 'localTimezone'
|
|
125
|
-
}], [['--log-no-colors'], {
|
|
126
|
-
defaultValue: false,
|
|
127
|
-
required: false,
|
|
128
|
-
help: 'Do not use colors in console output',
|
|
129
|
-
nargs: 0,
|
|
130
|
-
action: 'storeTrue',
|
|
131
|
-
dest: 'logNoColors'
|
|
132
|
-
}], [['-G', '--webhook'], {
|
|
133
|
-
defaultValue: null,
|
|
134
|
-
required: false,
|
|
135
|
-
example: 'localhost:9876',
|
|
136
|
-
dest: 'webhook',
|
|
137
|
-
help: 'Also send log output to this HTTP listener'
|
|
138
|
-
}], [['--nodeconfig'], {
|
|
139
|
-
required: false,
|
|
140
|
-
defaultValue: null,
|
|
141
|
-
dest: 'nodeconfig',
|
|
142
|
-
help: 'Configuration JSON file to register appium with selenium grid',
|
|
143
|
-
example: '/abs/path/to/nodeconfig.json'
|
|
144
|
-
}], [['--chromedriver-port'], {
|
|
145
|
-
defaultValue: null,
|
|
146
|
-
dest: 'chromeDriverPort',
|
|
147
|
-
required: false,
|
|
148
|
-
type: 'int',
|
|
149
|
-
example: '9515',
|
|
150
|
-
help: 'Port upon which ChromeDriver will run. If not given, Android driver will pick a random available port.'
|
|
151
|
-
}], [['--chromedriver-executable'], {
|
|
152
|
-
defaultValue: null,
|
|
153
|
-
dest: 'chromedriverExecutable',
|
|
154
|
-
required: false,
|
|
155
|
-
help: 'ChromeDriver executable full path'
|
|
156
|
-
}], [['--show-config'], {
|
|
157
|
-
defaultValue: false,
|
|
158
|
-
dest: 'showConfig',
|
|
159
|
-
action: 'storeTrue',
|
|
160
|
-
required: false,
|
|
161
|
-
help: 'Show info about the appium server configuration and exit'
|
|
162
|
-
}], [['--no-perms-check'], {
|
|
163
|
-
defaultValue: false,
|
|
164
|
-
dest: 'noPermsCheck',
|
|
165
|
-
action: 'storeTrue',
|
|
23
|
+
const INSTALL_TYPES_ARRAY = [..._extensionConfig.INSTALL_TYPES];
|
|
24
|
+
const EXTENSION_TYPES = new Set([_constants.DRIVER_TYPE, _constants.PLUGIN_TYPE]);
|
|
25
|
+
const globalExtensionArgs = new Map([[['--json'], {
|
|
166
26
|
required: false,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
defaultValue: false,
|
|
170
|
-
dest: 'enforceStrictCaps',
|
|
171
|
-
action: 'storeTrue',
|
|
172
|
-
required: false,
|
|
173
|
-
help: 'Cause sessions to fail if desired caps are sent in that Appium ' + 'does not recognize as valid for the selected device',
|
|
174
|
-
nargs: 0
|
|
175
|
-
}], [['--tmp'], {
|
|
176
|
-
defaultValue: null,
|
|
177
|
-
dest: 'tmpDir',
|
|
178
|
-
required: false,
|
|
179
|
-
help: 'Absolute path to directory Appium can use to manage temporary ' + 'files, like built-in iOS apps it needs to move around. On *nix/Mac ' + 'defaults to /tmp, on Windows defaults to C:\\Windows\\Temp'
|
|
180
|
-
}], [['--trace-dir'], {
|
|
181
|
-
defaultValue: null,
|
|
182
|
-
dest: 'traceDir',
|
|
183
|
-
required: false,
|
|
184
|
-
help: 'Absolute path to directory Appium use to save ios instruments ' + 'traces, defaults to <tmp dir>/appium-instruments'
|
|
185
|
-
}], [['--debug-log-spacing'], {
|
|
186
|
-
dest: 'debugLogSpacing',
|
|
187
|
-
defaultValue: false,
|
|
188
|
-
action: 'storeTrue',
|
|
189
|
-
required: false,
|
|
190
|
-
help: 'Add exaggerated spacing in logs to help with visual inspection'
|
|
191
|
-
}], [['--suppress-adb-kill-server'], {
|
|
192
|
-
dest: 'suppressKillServer',
|
|
193
|
-
defaultValue: false,
|
|
194
|
-
action: 'storeTrue',
|
|
195
|
-
required: false,
|
|
196
|
-
help: '(Android-only) If set, prevents Appium from killing the adb server instance',
|
|
197
|
-
nargs: 0
|
|
198
|
-
}], [['--long-stacktrace'], {
|
|
199
|
-
dest: 'longStacktrace',
|
|
200
|
-
defaultValue: false,
|
|
201
|
-
required: false,
|
|
202
|
-
action: 'storeTrue',
|
|
203
|
-
help: 'Add long stack traces to log entries. Recommended for debugging only.'
|
|
204
|
-
}], [['--webkit-debug-proxy-port'], {
|
|
205
|
-
defaultValue: 27753,
|
|
206
|
-
dest: 'webkitDebugProxyPort',
|
|
207
|
-
required: false,
|
|
208
|
-
type: 'int',
|
|
209
|
-
example: '27753',
|
|
210
|
-
help: '(IOS-only) Local port used for communication with ios-webkit-debug-proxy'
|
|
211
|
-
}], [['--webdriveragent-port'], {
|
|
212
|
-
defaultValue: 8100,
|
|
213
|
-
dest: 'wdaLocalPort',
|
|
214
|
-
required: false,
|
|
215
|
-
type: 'int',
|
|
216
|
-
example: '8100',
|
|
217
|
-
help: '(IOS-only, XCUITest-only) Local port used for communication with WebDriverAgent'
|
|
218
|
-
}], [['-dc', '--default-capabilities'], {
|
|
219
|
-
dest: 'defaultCapabilities',
|
|
220
|
-
defaultValue: {},
|
|
221
|
-
type: _parserHelpers.parseDefaultCaps,
|
|
222
|
-
required: false,
|
|
223
|
-
example: '[ \'{"app": "myapp.app", "deviceName": "iPhone Simulator"}\' ' + '| /path/to/caps.json ]',
|
|
224
|
-
help: 'Set the default desired capabilities, which will be set on each ' + 'session unless overridden by received capabilities.'
|
|
225
|
-
}], [['--relaxed-security'], {
|
|
226
|
-
defaultValue: false,
|
|
227
|
-
dest: 'relaxedSecurityEnabled',
|
|
228
|
-
action: 'storeTrue',
|
|
229
|
-
required: false,
|
|
230
|
-
help: 'Disable additional security checks, so it is possible to use some advanced features, provided ' + 'by drivers supporting this option. Only enable it if all the ' + 'clients are in the trusted network and it\'s not the case if a client could potentially ' + 'break out of the session sandbox. Specific features can be overridden by ' + 'using the --deny-insecure flag',
|
|
231
|
-
nargs: 0
|
|
232
|
-
}], [['--allow-insecure'], {
|
|
233
|
-
dest: 'allowInsecure',
|
|
234
|
-
defaultValue: [],
|
|
235
|
-
type: _parserHelpers.parseSecurityFeatures,
|
|
236
|
-
required: false,
|
|
237
|
-
example: 'execute_driver_script,adb_shell',
|
|
238
|
-
help: 'Set which insecure features are allowed to run in this server\'s sessions. ' + 'Features are defined on a driver level; see documentation for more details. ' + 'This should be either a comma-separated list of feature names, or a path to ' + 'a file where each feature name is on a line. Note that features defined via ' + '--deny-insecure will be disabled, even if also listed here.'
|
|
239
|
-
}], [['--deny-insecure'], {
|
|
240
|
-
dest: 'denyInsecure',
|
|
241
|
-
defaultValue: [],
|
|
242
|
-
type: _parserHelpers.parseSecurityFeatures,
|
|
243
|
-
required: false,
|
|
244
|
-
example: 'execute_driver_script,adb_shell',
|
|
245
|
-
help: 'Set which insecure features are not allowed to run in this server\'s sessions. ' + 'Features are defined on a driver level; see documentation for more details. ' + 'This should be either a comma-separated list of feature names, or a path to ' + 'a file where each feature name is on a line. Features listed here will not be ' + 'enabled even if also listed in --allow-insecure, and even if --relaxed-security ' + 'is turned on.'
|
|
246
|
-
}]];
|
|
247
|
-
exports.serverArgs = serverArgs;
|
|
248
|
-
const globalExtensionArgs = [[['--json'], {
|
|
249
|
-
required: false,
|
|
250
|
-
defaultValue: false,
|
|
251
|
-
action: 'storeTrue',
|
|
27
|
+
default: false,
|
|
28
|
+
action: 'store_true',
|
|
252
29
|
help: 'Use JSON for output format',
|
|
253
|
-
nargs: 0,
|
|
254
30
|
dest: 'json'
|
|
255
|
-
}]];
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
31
|
+
}]]);
|
|
32
|
+
|
|
33
|
+
const getExtensionArgs = _lodash.default.memoize(function getExtensionArgs() {
|
|
34
|
+
const extensionArgs = {};
|
|
35
|
+
|
|
36
|
+
for (const type of EXTENSION_TYPES) {
|
|
37
|
+
extensionArgs[type] = {
|
|
38
|
+
[_constants.EXT_SUBCOMMAND_LIST]: makeListArgs(type),
|
|
39
|
+
[_constants.EXT_SUBCOMMAND_INSTALL]: makeInstallArgs(type),
|
|
40
|
+
[_constants.EXT_SUBCOMMAND_UNINSTALL]: makeUninstallArgs(type),
|
|
41
|
+
[_constants.EXT_SUBCOMMAND_UPDATE]: makeUpdateArgs(type),
|
|
42
|
+
[_constants.EXT_SUBCOMMAND_RUN]: makeRunArgs(type)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return extensionArgs;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
exports.getExtensionArgs = getExtensionArgs;
|
|
261
50
|
|
|
262
51
|
function makeListArgs(type) {
|
|
263
|
-
return [...globalExtensionArgs, [['--installed'], {
|
|
52
|
+
return new Map([...globalExtensionArgs, [['--installed'], {
|
|
264
53
|
required: false,
|
|
265
|
-
|
|
266
|
-
action: '
|
|
54
|
+
default: false,
|
|
55
|
+
action: 'store_true',
|
|
267
56
|
help: `List only installed ${type}s`,
|
|
268
|
-
nargs: 0,
|
|
269
57
|
dest: 'showInstalled'
|
|
270
58
|
}], [['--updates'], {
|
|
271
59
|
required: false,
|
|
272
|
-
|
|
273
|
-
action: '
|
|
60
|
+
default: false,
|
|
61
|
+
action: 'store_true',
|
|
274
62
|
help: 'Show information about newer versions',
|
|
275
|
-
nargs: 0,
|
|
276
63
|
dest: 'showUpdates'
|
|
277
|
-
}]];
|
|
64
|
+
}]]);
|
|
278
65
|
}
|
|
279
66
|
|
|
280
67
|
function makeInstallArgs(type) {
|
|
281
|
-
return [...globalExtensionArgs, [[type], {
|
|
282
|
-
type: '
|
|
283
|
-
example: type ===
|
|
284
|
-
help: `Name of the ${type} to install`
|
|
68
|
+
return new Map([...globalExtensionArgs, [[type], {
|
|
69
|
+
type: 'str',
|
|
70
|
+
help: `Name of the ${type} to install, for example: ` + type === _constants.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
|
|
285
71
|
}], [['--source'], {
|
|
286
72
|
required: false,
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
help: `Where to look for the ${type} if it is not one of Appium's verified ` + `${type}s. Possible values: ${
|
|
73
|
+
default: null,
|
|
74
|
+
choices: INSTALL_TYPES_ARRAY,
|
|
75
|
+
help: `Where to look for the ${type} if it is not one of Appium's verified ` + `${type}s. Possible values: ${INSTALL_TYPES_ARRAY.join(', ')}`,
|
|
290
76
|
dest: 'installType'
|
|
291
77
|
}], [['--package'], {
|
|
292
78
|
required: false,
|
|
293
|
-
|
|
294
|
-
type: '
|
|
79
|
+
default: null,
|
|
80
|
+
type: 'str',
|
|
295
81
|
help: `If installing from Git or GitHub, the package name, as defined in the plugin's ` + `package.json file in the "name" field, cannot be determined automatically, and ` + `should be reported here, otherwise the install will probably fail.`,
|
|
296
82
|
dest: 'packageName'
|
|
297
|
-
}]];
|
|
83
|
+
}]]);
|
|
298
84
|
}
|
|
299
85
|
|
|
300
86
|
function makeUninstallArgs(type) {
|
|
301
|
-
return [...globalExtensionArgs, [[type], {
|
|
302
|
-
type: '
|
|
303
|
-
example: type ===
|
|
304
|
-
|
|
305
|
-
}]];
|
|
87
|
+
return new Map([...globalExtensionArgs, [[type], {
|
|
88
|
+
type: 'str',
|
|
89
|
+
help: 'Name of the driver to uninstall, for example: ' + type === _constants.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
|
|
90
|
+
}]]);
|
|
306
91
|
}
|
|
307
92
|
|
|
308
93
|
function makeUpdateArgs(type) {
|
|
309
|
-
return [...globalExtensionArgs, [[type], {
|
|
310
|
-
type: '
|
|
311
|
-
example: type ===
|
|
312
|
-
help: `Name of the ${type} to update, or the word "installed" to update all installed ` + `${type}s. To see available updates, run "appium ${type} list --installed --updates"`
|
|
94
|
+
return new Map([...globalExtensionArgs, [[type], {
|
|
95
|
+
type: 'str',
|
|
96
|
+
help: `Name of the ${type} to update, or the word "installed" to update all installed ` + `${type}s. To see available updates, run "appium ${type} list --installed --updates". ` + 'For example: ' + type === _constants.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
|
|
313
97
|
}], [['--unsafe'], {
|
|
314
98
|
required: false,
|
|
315
|
-
|
|
316
|
-
action: '
|
|
317
|
-
nargs: 0,
|
|
99
|
+
default: false,
|
|
100
|
+
action: 'store_true',
|
|
318
101
|
help: `Include updates that might have a new major revision, and potentially include ` + `breaking changes`
|
|
319
|
-
}]];
|
|
102
|
+
}]]);
|
|
320
103
|
}
|
|
321
104
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
105
|
+
function makeRunArgs(type) {
|
|
106
|
+
return new Map([...globalExtensionArgs, [[type], {
|
|
107
|
+
type: 'str',
|
|
108
|
+
help: `Name of the ${type} to run a script from, for example: ` + type === _constants.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
|
|
109
|
+
}], [['scriptName'], {
|
|
110
|
+
default: null,
|
|
111
|
+
type: 'str',
|
|
112
|
+
help: `Name of the script to run from the ${type}. The script name must be cached ` + `inside the "scripts" field under "appium" inside the ${type}'s "package.json" file`
|
|
113
|
+
}]]);
|
|
114
|
+
}
|
|
328
115
|
|
|
116
|
+
function getServerArgs() {
|
|
117
|
+
return new Map([...(0, _cliArgs.toParserArgs)(), ...serverArgsDisallowedInConfig]);
|
|
118
|
+
}
|
|
329
119
|
|
|
330
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvYXJncy5qcyJdLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiVVNFX0FMTF9QTFVHSU5TIiwic2hhcmVkQXJncyIsInJlcXVpcmVkIiwiZGVmYXVsdFZhbHVlIiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9IT01FIiwiREVGQVVMVF9BUFBJVU1fSE9NRSIsImhlbHAiLCJkZXN0IiwiZXhhbXBsZSIsInNlcnZlckFyZ3MiLCJuYXJncyIsInR5cGUiLCJwYXJzZVBsdWdpbk5hbWVzIiwiYWN0aW9uIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJjaG9pY2VzIiwicGFyc2VEZWZhdWx0Q2FwcyIsInBhcnNlU2VjdXJpdHlGZWF0dXJlcyIsImdsb2JhbEV4dGVuc2lvbkFyZ3MiLCJleHRlbnNpb25BcmdzIiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsIm1ha2VMaXN0QXJncyIsIm1ha2VJbnN0YWxsQXJncyIsInBhcnNlSW5zdGFsbFR5cGVzIiwiSlNPTiIsInN0cmluZ2lmeSIsIklOU1RBTExfVFlQRVMiLCJtYWtlVW5pbnN0YWxsQXJncyIsIm1ha2VVcGRhdGVBcmdzIiwibGlzdCIsImluc3RhbGwiLCJ1bmluc3RhbGwiLCJ1cGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGNBQWMsR0FBRyxVQUF2QjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxlQUF2QjtBQUNBLE1BQU1DLGVBQWUsR0FBRyxLQUF4Qjs7QUFHQSxNQUFNQyxVQUFVLEdBQUcsQ0FDakIsQ0FBQyxDQUFDLEtBQUQsRUFBUSxRQUFSLEVBQWtCLGVBQWxCLENBQUQsRUFBcUM7QUFDbkNDLEVBQUFBLFFBQVEsRUFBRSxLQUR5QjtBQUVuQ0MsRUFBQUEsWUFBWSxFQUFFQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsV0FBWixJQUEyQkMsb0NBRk47QUFHbkNDLEVBQUFBLElBQUksRUFBRSxpSUFINkI7QUFJ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QTdDO0FBQ0FRLEVBQUFBLGFBQWEsQ0FBQ1IsSUFBRCxDQUFiLENBQW9CcUIsU0FBcEIsR0FBZ0NKLGlCQUFpQixDQUFDakIsSUFBRCxDQUFqRDtBQUNBUSxFQUFBQSxhQUFhLENBQUNSLElBQUQsQ0FBYixDQUFvQnNCLE1BQXBCLEdBQTZCSixjQUFjLENBQUNsQixJQUFELENBQTNDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0JBU0VfUEFUSCB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsIHBhcnNlRGVmYXVsdENhcHMsIHBhcnNlUGx1Z2luTmFtZXMsIHBhcnNlSW5zdGFsbFR5cGVzIH0gZnJvbSAnLi9wYXJzZXItaGVscGVycyc7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVTLCBERUZBVUxUX0FQUElVTV9IT01FLCBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUgfSBmcm9tICcuLi9leHRlbnNpb24tY29uZmlnJztcblxuY29uc3QgRFJJVkVSX0VYQU1QTEUgPSAneGN1aXRlc3QnO1xuY29uc3QgUExVR0lOX0VYQU1QTEUgPSAnZmluZF9ieV9pbWFnZSc7XG5jb25zdCBVU0VfQUxMX1BMVUdJTlMgPSAnYWxsJztcblxuLy8gc2hhcmVkQXJncyB3aWxsIGJlIGFkZGVkIHRvIGV2ZXJ5IHN1YmNvbW1hbmRcbmNvbnN0IHNoYXJlZEFyZ3MgPSBbXG4gIFtbJy1haCcsICctLWhvbWUnLCAnLS1hcHBpdW0taG9tZSddLCB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZTogcHJvY2Vzcy5lbnYuQVBQSVVNX0hPTUUgfHwgREVGQVVMVF9BUFBJVU1fSE9NRSxcbiAgICBoZWxwOiAnVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBBcHBpdW0gd2lsbCBrZWVwIGluc3RhbGxlZCBkcml2ZXJzLCBwbHVnaW5zLCBhbmQgYW55IG90aGVyIG1ldGFkYXRhIG5lY2Vzc2FyeSBmb3IgaXRzIG9wZXJhdGlvbicsXG4gICAgZGVzdDogJ2FwcGl1bUhvbWUnLFxuICB9XSxcblxuICBbWyctLWxvZy1maWx0ZXJzJ10sIHtcbiAgICBkZXN0OiAnbG9nRmlsdGVycycsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnU2V0IHRoZSBmdWxsIHBhdGggdG8gYSBKU09OIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsb2cgZmlsdGVyaW5nIHJ1bGVzJyxcbiAgICBleGFtcGxlOiAnL2hvbWUvcnVsZXMuanNvbicsXG4gIH1dLFxuXTtcblxuY29uc3Qgc2VydmVyQXJncyA9IFtcbiAgW1snLS1zaGVsbCddLCB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBoZWxwOiAnRW50ZXIgUkVQTCBtb2RlJyxcbiAgICBuYXJnczogMCxcbiAgICBkZXN0OiAnc2hlbGwnLFxuICB9XSxcblxuICBbWyctLXBsdWdpbnMnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFtdLFxuICAgIGhlbHA6IGBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGluc3RhbGxlZCBwbHVnaW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgYWN0aXZlIGZvciB0aGlzIGAgK1xuICAgICAgICAgIGBzZXJ2ZXIuIFRvIGFjdGl2YXRlIGFsbCBwbHVnaW5zLCB5b3UgY2FuIHVzZSB0aGUgc2luZ2xlIHN0cmluZyBcIiR7VVNFX0FMTF9QTFVHSU5TfVwiIGAgK1xuICAgICAgICAgIGBhcyB0aGUgdmFsdWUgKGUuZy4gLS1wbHVnaW5zPSR7VVNFX0FMTF9QTFVHSU5TfSlgLFxuICAgIHR5cGU6IHBhcnNlUGx1Z2luTmFtZXMsXG4gICAgZGVzdDogJ3BsdWdpbnMnLFxuICB9XSxcblxuICBbWyctLWFsbG93LWNvcnMnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgaGVscDogJ1doZXRoZXIgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFsbG93IHdlYiBicm93c2VyIGNvbm5lY3Rpb25zIGZyb20gYW55IGhvc3QnLFxuICAgIG5hcmdzOiAwLFxuICAgIGRlc3Q6ICdhbGxvd0NvcnMnLFxuICB9XSxcblxuICBbWyctLXJlYm9vdCddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBkZXN0OiAncmVib290JyxcbiAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnKEFuZHJvaWQtb25seSkgcmVib290IGVtdWxhdG9yIGFmdGVyIGVhY2ggc2Vzc2lvbiBhbmQga2lsbCBpdCBhdCB0aGUgZW5kJyxcbiAgICBuYXJnczogMCxcbiAgfV0sXG5cbiAgW1snLWEnLCAnLS1hZGRyZXNzJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6ICcwLjAuMC4wJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZXhhbXBsZTogJzAuMC4wLjAnLFxuICAgIGhlbHA6ICdJUCBBZGRyZXNzIHRvIGxpc3RlbiBvbicsXG4gICAgZGVzdDogJ2FkZHJlc3MnLFxuICB9XSxcblxuICBbWyctcCcsICctLXBvcnQnXSwge1xuICAgIGRlZmF1bHRWYWx1ZTogNDcyMyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdHlwZTogJ2ludCcsXG4gICAgZXhhbXBsZTogJzQ3MjMnLFxuICAgIGhlbHA6ICdwb3J0IHRvIGxpc3RlbiBvbicsXG4gICAgZGVzdDogJ3BvcnQnLFxuICB9XSxcblxuICBbWyctcGEnLCAnLS1iYXNlLXBhdGgnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgIGRlc3Q6ICdiYXNlUGF0aCcsXG4gICAgZXhhbXBsZTogJy9wYXRoL3ByZWZpeCcsXG4gICAgaGVscDogJ0Jhc2UgcGF0aCB0byB1c2UgYXMgdGhlIHByZWZpeCBmb3IgYWxsIHdlYmRyaXZlciByb3V0ZXMgcnVubmluZycgK1xuICAgICAgICAgIGBvbiB0aGlzIHNlcnZlciAoZGVmYXVsdDogJHtERUZBVUxUX0JBU0VfUEFUSH0pYFxuICB9XSxcblxuICBbWyctY2EnLCAnLS1jYWxsYmFjay1hZGRyZXNzJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzdDogJ2NhbGxiYWNrQWRkcmVzcycsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGV4YW1wbGU6ICcxMjcuMC4wLjEnLFxuICAgIGhlbHA6ICdjYWxsYmFjayBJUCBBZGRyZXNzIChkZWZhdWx0OiBzYW1lIGFzIC0tYWRkcmVzcyknLFxuICB9XSxcblxuICBbWyctY3AnLCAnLS1jYWxsYmFjay1wb3J0J10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzdDogJ2NhbGxiYWNrUG9ydCcsXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHR5cGU6ICdpbnQnLFxuICAgIGV4YW1wbGU6ICc0NzIzJyxcbiAgICBoZWxwOiAnY2FsbGJhY2sgcG9ydCAoZGVmYXVsdDogc2FtZSBhcyBwb3J0KScsXG4gIH1dLFxuXG4gIFtbJy0tc2Vzc2lvbi1vdmVycmlkZSddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBkZXN0OiAnc2Vzc2lvbk92ZXJyaWRlJyxcbiAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnRW5hYmxlcyBzZXNzaW9uIG92ZXJyaWRlIChjbG9iYmVyaW5nKScsXG4gICAgbmFyZ3M6IDAsXG4gIH1dLFxuXG4gIFtbJy1nJywgJy0tbG9nJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZGVzdDogJ2xvZ0ZpbGUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBleGFtcGxlOiAnL3BhdGgvdG8vYXBwaXVtLmxvZycsXG4gICAgaGVscDogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgZmlsZScsXG4gIH1dLFxuXG4gIFtbJy0tbG9nLWxldmVsJ10sIHtcbiAgICBjaG9pY2VzOiBbXG4gICAgICAnaW5mbycsICdpbmZvOmRlYnVnJywgJ2luZm86aW5mbycsICdpbmZvOndhcm4nLCAnaW5mbzplcnJvcicsXG4gICAgICAnd2FybicsICd3YXJuOmRlYnVnJywgJ3dhcm46aW5mbycsICd3YXJuOndhcm4nLCAnd2FybjplcnJvcicsXG4gICAgICAnZXJyb3InLCAnZXJyb3I6ZGVidWcnLCAnZXJyb3I6aW5mbycsICdlcnJvcjp3YXJuJywgJ2Vycm9yOmVycm9yJyxcbiAgICAgICdkZWJ1ZycsICdkZWJ1ZzpkZWJ1ZycsICdkZWJ1ZzppbmZvJywgJ2RlYnVnOndhcm4nLCAnZGVidWc6ZXJyb3InLFxuICAgIF0sXG4gICAgZGVmYXVsdFZhbHVlOiAnZGVidWcnLFxuICAgIGRlc3Q6ICdsb2dsZXZlbCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGV4YW1wbGU6ICdkZWJ1ZycsXG4gICAgaGVscDogJ2xvZyBsZXZlbDsgZGVmYXVsdCAoY29uc29sZVs6ZmlsZV0pOiBkZWJ1Z1s6ZGVidWddJyxcbiAgfV0sXG5cbiAgW1snLS1sb2ctdGltZXN0YW1wJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnU2hvdyB0aW1lc3RhbXBzIGluIGNvbnNvbGUgb3V0cHV0JyxcbiAgICBuYXJnczogMCxcbiAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgIGRlc3Q6ICdsb2dUaW1lc3RhbXAnLFxuICB9XSxcblxuICBbWyctLWxvY2FsLXRpbWV6b25lJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnVXNlIGxvY2FsIHRpbWV6b25lIGZvciB0aW1lc3RhbXBzJyxcbiAgICBuYXJnczogMCxcbiAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgIGRlc3Q6ICdsb2NhbFRpbWV6b25lJyxcbiAgfV0sXG5cbiAgW1snLS1sb2ctbm8tY29sb3JzJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnRG8gbm90IHVzZSBjb2xvcnMgaW4gY29uc29sZSBvdXRwdXQnLFxuICAgIG5hcmdzOiAwLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgZGVzdDogJ2xvZ05vQ29sb3JzJyxcbiAgfV0sXG5cbiAgW1snLUcnLCAnLS13ZWJob29rJ10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGV4YW1wbGU6ICdsb2NhbGhvc3Q6OTg3NicsXG4gICAgZGVzdDogJ3dlYmhvb2snLFxuICAgIGhlbHA6ICdBbHNvIHNlbmQgbG9nIG91dHB1dCB0byB0aGlzIEhUVFAgbGlzdGVuZXInLFxuICB9XSxcblxuICBbWyctLW5vZGVjb25maWcnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgZGVzdDogJ25vZGVjb25maWcnLFxuICAgIGhlbHA6ICdDb25maWd1cmF0aW9uIEpTT04gZmlsZSB0byByZWdpc3RlciBhcHBpdW0gd2l0aCBzZWxlbml1bSBncmlkJyxcbiAgICBleGFtcGxlOiAnL2Ficy9wYXRoL3RvL25vZGVjb25maWcuanNvbicsXG4gIH1dLFxuXG4gIFtbJy0tY2hyb21lZHJpdmVyLXBvcnQnXSwge1xuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBkZXN0OiAnY2hyb21lRHJpdmVyUG9ydCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHR5cGU6ICdpbnQnLFxuICAgIGV4YW1wbGU6ICc5NTE1JyxcbiAgICBoZWxwOiAnUG9ydCB1cG9uIHdoaWNoIENocm9tZURyaXZlciB3aWxsIHJ1bi4gSWYgbm90IGdpdmVuLCBBbmRyb2lkIGRyaXZlciB3aWxsIHBpY2sgYSByYW5kb20gYXZhaWxhYmxlIHBvcnQuJyxcbiAgfV0sXG5cbiAgW1snLS1jaHJvbWVkcml2ZXItZXhlY3V0YWJsZSddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGRlc3Q6ICdjaHJvbWVkcml2ZXJFeGVjdXRhYmxlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0Nocm9tZURyaXZlciBleGVjdXRhYmxlIGZ1bGwgcGF0aCcsXG4gIH1dLFxuXG4gIFtbJy0tc2hvdy1jb25maWcnXSwge1xuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgZGVzdDogJ3Nob3dDb25maWcnLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdTaG93IGluZm8gYWJvdXQgdGhlIGFwcGl1bSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgZXhpdCcsXG4gIH1dLFxuXG4gIFtbJy0tbm8tcGVybXMtY2hlY2snXSwge1xuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgZGVzdDogJ25vUGVybXNDaGVjaycsXG4gICAgYWN0aW9uOiAnc3RvcmVUcnVlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0J5cGFzcyBBcHBpdW1cXCdzIGNoZWNrcyB0byBlbnN1cmUgd2UgY2FuIHJlYWQvd3JpdGUgbmVjZXNzYXJ5IGZpbGVzJyxcbiAgfV0sXG5cbiAgW1snLS1zdHJpY3QtY2FwcyddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBkZXN0OiAnZW5mb3JjZVN0cmljdENhcHMnLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdDYXVzZSBzZXNzaW9ucyB0byBmYWlsIGlmIGRlc2lyZWQgY2FwcyBhcmUgc2VudCBpbiB0aGF0IEFwcGl1bSAnICtcbiAgICAgICAgICAnZG9lcyBub3QgcmVjb2duaXplIGFzIHZhbGlkIGZvciB0aGUgc2VsZWN0ZWQgZGV2aWNlJyxcbiAgICBuYXJnczogMCxcbiAgfV0sXG5cbiAgW1snLS10bXAnXSwge1xuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICBkZXN0OiAndG1wRGlyJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0Fic29sdXRlIHBhdGggdG8gZGlyZWN0b3J5IEFwcGl1bSBjYW4gdXNlIHRvIG1hbmFnZSB0ZW1wb3JhcnkgJyArXG4gICAgICAgICAgJ2ZpbGVzLCBsaWtlIGJ1aWx0LWluIGlPUyBhcHBzIGl0IG5lZWRzIHRvIG1vdmUgYXJvdW5kLiBPbiAqbml4L01hYyAnICtcbiAgICAgICAgICAnZGVmYXVsdHMgdG8gL3RtcCwgb24gV2luZG93cyBkZWZhdWx0cyB0byBDOlxcXFxXaW5kb3dzXFxcXFRlbXAnLFxuICB9XSxcblxuICBbWyctLXRyYWNlLWRpciddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIGRlc3Q6ICd0cmFjZURpcicsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gdXNlIHRvIHNhdmUgaW9zIGluc3RydW1lbnRzICcgK1xuICAgICAgICAgICd0cmFjZXMsIGRlZmF1bHRzIHRvIDx0bXAgZGlyPi9hcHBpdW0taW5zdHJ1bWVudHMnLFxuICB9XSxcblxuICBbWyctLWRlYnVnLWxvZy1zcGFjaW5nJ10sIHtcbiAgICBkZXN0OiAnZGVidWdMb2dTcGFjaW5nJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdBZGQgZXhhZ2dlcmF0ZWQgc3BhY2luZyBpbiBsb2dzIHRvIGhlbHAgd2l0aCB2aXN1YWwgaW5zcGVjdGlvbicsXG4gIH1dLFxuXG4gIFtbJy0tc3VwcHJlc3MtYWRiLWtpbGwtc2VydmVyJ10sIHtcbiAgICBkZXN0OiAnc3VwcHJlc3NLaWxsU2VydmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICcoQW5kcm9pZC1vbmx5KSBJZiBzZXQsIHByZXZlbnRzIEFwcGl1bSBmcm9tIGtpbGxpbmcgdGhlIGFkYiBzZXJ2ZXIgaW5zdGFuY2UnLFxuICAgIG5hcmdzOiAwLFxuICB9XSxcblxuICBbWyctLWxvbmctc3RhY2t0cmFjZSddLCB7XG4gICAgZGVzdDogJ2xvbmdTdGFja3RyYWNlJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgIGhlbHA6ICdBZGQgbG9uZyBzdGFjayB0cmFjZXMgdG8gbG9nIGVudHJpZXMuIFJlY29tbWVuZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4nLFxuICB9XSxcblxuICBbWyctLXdlYmtpdC1kZWJ1Zy1wcm94eS1wb3J0J10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IDI3NzUzLFxuICAgIGRlc3Q6ICd3ZWJraXREZWJ1Z1Byb3h5UG9ydCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHR5cGU6ICdpbnQnLFxuICAgIGV4YW1wbGU6ICcyNzc1MycsXG4gICAgaGVscDogJyhJT1Mtb25seSkgTG9jYWwgcG9ydCB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggaW9zLXdlYmtpdC1kZWJ1Zy1wcm94eSdcbiAgfV0sXG5cbiAgW1snLS13ZWJkcml2ZXJhZ2VudC1wb3J0J10sIHtcbiAgICBkZWZhdWx0VmFsdWU6IDgxMDAsXG4gICAgZGVzdDogJ3dkYUxvY2FsUG9ydCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHR5cGU6ICdpbnQnLFxuICAgIGV4YW1wbGU6ICc4MTAwJyxcbiAgICBoZWxwOiAnKElPUy1vbmx5LCBYQ1VJVGVzdC1vbmx5KSBMb2NhbCBwb3J0IHVzZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBXZWJEcml2ZXJBZ2VudCdcbiAgfV0sXG5cbiAgW1snLWRjJywgJy0tZGVmYXVsdC1jYXBhYmlsaXRpZXMnXSwge1xuICAgIGRlc3Q6ICdkZWZhdWx0Q2FwYWJpbGl0aWVzJyxcbiAgICBkZWZhdWx0VmFsdWU6IHt9LFxuICAgIHR5cGU6IHBhcnNlRGVmYXVsdENhcHMsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGV4YW1wbGU6ICdbIFxcJ3tcImFwcFwiOiBcIm15YXBwLmFwcFwiLCBcImRldmljZU5hbWVcIjogXCJpUGhvbmUgU2ltdWxhdG9yXCJ9XFwnICcgK1xuICAgICAgICAgICAgICd8IC9wYXRoL3RvL2NhcHMuanNvbiBdJyxcbiAgICBoZWxwOiAnU2V0IHRoZSBkZWZhdWx0IGRlc2lyZWQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIHNldCBvbiBlYWNoICcgK1xuICAgICAgICAgICdzZXNzaW9uIHVubGVzcyBvdmVycmlkZGVuIGJ5IHJlY2VpdmVkIGNhcGFiaWxpdGllcy4nXG4gIH1dLFxuXG4gIFtbJy0tcmVsYXhlZC1zZWN1cml0eSddLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBkZXN0OiAncmVsYXhlZFNlY3VyaXR5RW5hYmxlZCcsXG4gICAgYWN0aW9uOiAnc3RvcmVUcnVlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0Rpc2FibGUgYWRkaXRpb25hbCBzZWN1cml0eSBjaGVja3MsIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBzb21lIGFkdmFuY2VkIGZlYXR1cmVzLCBwcm92aWRlZCAnICtcbiAgICAgICAgICAnYnkgZHJpdmVycyBzdXBwb3J0aW5nIHRoaXMgb3B0aW9uLiBPbmx5IGVuYWJsZSBpdCBpZiBhbGwgdGhlICcgK1xuICAgICAgICAgICdjbGllbnRzIGFyZSBpbiB0aGUgdHJ1c3RlZCBuZXR3b3JrIGFuZCBpdFxcJ3Mgbm90IHRoZSBjYXNlIGlmIGEgY2xpZW50IGNvdWxkIHBvdGVudGlhbGx5ICcgK1xuICAgICAgICAgICdicmVhayBvdXQgb2YgdGhlIHNlc3Npb24gc2FuZGJveC4gU3BlY2lmaWMgZmVhdHVyZXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJyArXG4gICAgICAgICAgJ3VzaW5nIHRoZSAtLWRlbnktaW5zZWN1cmUgZmxhZycsXG4gICAgbmFyZ3M6IDBcbiAgfV0sXG5cbiAgW1snLS1hbGxvdy1pbnNlY3VyZSddLCB7XG4gICAgZGVzdDogJ2FsbG93SW5zZWN1cmUnLFxuICAgIGRlZmF1bHRWYWx1ZTogW10sXG4gICAgdHlwZTogcGFyc2VTZWN1cml0eUZlYXR1cmVzLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBleGFtcGxlOiAnZXhlY3V0ZV9kcml2ZXJfc2NyaXB0LGFkYl9zaGVsbCcsXG4gICAgaGVscDogJ1NldCB3aGljaCBpbnNlY3VyZSBmZWF0dXJlcyBhcmUgYWxsb3dlZCB0byBydW4gaW4gdGhpcyBzZXJ2ZXJcXCdzIHNlc3Npb25zLiAnICtcbiAgICAgICAgICAnRmVhdHVyZXMgYXJlIGRlZmluZWQgb24gYSBkcml2ZXIgbGV2ZWw7IHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuICcgK1xuICAgICAgICAgICdUaGlzIHNob3VsZCBiZSBlaXRoZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlIG5hbWVzLCBvciBhIHBhdGggdG8gJyArXG4gICAgICAgICAgJ2EgZmlsZSB3aGVyZSBlYWNoIGZlYXR1cmUgbmFtZSBpcyBvbiBhIGxpbmUuIE5vdGUgdGhhdCBmZWF0dXJlcyBkZWZpbmVkIHZpYSAnICtcbiAgICAgICAgICAnLS1kZW55LWluc2VjdXJlIHdpbGwgYmUgZGlzYWJsZWQsIGV2ZW4gaWYgYWxzbyBsaXN0ZWQgaGVyZS4nLFxuICB9XSxcblxuICBbWyctLWRlbnktaW5zZWN1cmUnXSwge1xuICAgIGRlc3Q6ICdkZW55SW5zZWN1cmUnLFxuICAgIGRlZmF1bHRWYWx1ZTogW10sXG4gICAgdHlwZTogcGFyc2VTZWN1cml0eUZlYXR1cmVzLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBleGFtcGxlOiAnZXhlY3V0ZV9kcml2ZXJfc2NyaXB0LGFkYl9zaGVsbCcsXG4gICAgaGVscDogJ1NldCB3aGljaCBpbnNlY3VyZSBmZWF0dXJlcyBhcmUgbm90IGFsbG93ZWQgdG8gcnVuIGluIHRoaXMgc2VydmVyXFwncyBzZXNzaW9ucy4gJyArXG4gICAgICAgICAgJ0ZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiAnICtcbiAgICAgICAgICAnVGhpcyBzaG91bGQgYmUgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZSBuYW1lcywgb3IgYSBwYXRoIHRvICcgK1xuICAgICAgICAgICdhIGZpbGUgd2hlcmUgZWFjaCBmZWF0dXJlIG5hbWUgaXMgb24gYSBsaW5lLiBGZWF0dXJlcyBsaXN0ZWQgaGVyZSB3aWxsIG5vdCBiZSAnICtcbiAgICAgICAgICAnZW5hYmxlZCBldmVuIGlmIGFsc28gbGlzdGVkIGluIC0tYWxsb3ctaW5zZWN1cmUsIGFuZCBldmVuIGlmIC0tcmVsYXhlZC1zZWN1cml0eSAnICtcbiAgICAgICAgICAnaXMgdHVybmVkIG9uLicsXG4gIH1dLFxuXTtcblxuLy8gdGhpcyBzZXQgb2YgYXJncyB3b3JrcyBmb3IgYm90aCBkcml2ZXJzIGFuZCBwbHVnaW5zICgnZXh0ZW5zaW9ucycpXG5jb25zdCBnbG9iYWxFeHRlbnNpb25BcmdzID0gW1xuICBbWyctLWpzb24nXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgaGVscDogJ1VzZSBKU09OIGZvciBvdXRwdXQgZm9ybWF0JyxcbiAgICBuYXJnczogMCxcbiAgICBkZXN0OiAnanNvbidcbiAgfV1cbl07XG5cbmNvbnN0IGV4dGVuc2lvbkFyZ3MgPSB7W0RSSVZFUl9UWVBFXToge30sIFtQTFVHSU5fVFlQRV06IHt9fTtcblxuZnVuY3Rpb24gbWFrZUxpc3RBcmdzICh0eXBlKSB7XG4gIHJldHVybiBbXG4gICAgLi4uZ2xvYmFsRXh0ZW5zaW9uQXJncyxcbiAgICBbWyctLWluc3RhbGxlZCddLCB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVUcnVlJyxcbiAgICAgIGhlbHA6IGBMaXN0IG9ubHkgaW5zdGFsbGVkICR7dHlwZX1zYCxcbiAgICAgIG5hcmdzOiAwLFxuICAgICAgZGVzdDogJ3Nob3dJbnN0YWxsZWQnXG4gICAgfV0sXG4gICAgW1snLS11cGRhdGVzJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZVRydWUnLFxuICAgICAgaGVscDogJ1Nob3cgaW5mb3JtYXRpb24gYWJvdXQgbmV3ZXIgdmVyc2lvbnMnLFxuICAgICAgbmFyZ3M6IDAsXG4gICAgICBkZXN0OiAnc2hvd1VwZGF0ZXMnXG4gICAgfV1cbiAgXTtcbn1cblxuXG5mdW5jdGlvbiBtYWtlSW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZXhhbXBsZTogdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgICAgaGVscDogYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gaW5zdGFsbGAsXG4gICAgfV0sXG4gICAgW1snLS1zb3VyY2UnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgdHlwZTogcGFyc2VJbnN0YWxsVHlwZXMsXG4gICAgICBoZWxwOiBgV2hlcmUgdG8gbG9vayBmb3IgdGhlICR7dHlwZX0gaWYgaXQgaXMgbm90IG9uZSBvZiBBcHBpdW0ncyB2ZXJpZmllZCBgICtcbiAgICAgICAgICAgIGAke3R5cGV9cy4gUG9zc2libGUgdmFsdWVzOiAke0pTT04uc3RyaW5naWZ5KElOU1RBTExfVFlQRVMpfWAsXG4gICAgICBkZXN0OiAnaW5zdGFsbFR5cGUnXG4gICAgfV0sXG4gICAgW1snLS1wYWNrYWdlJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgaGVscDogYElmIGluc3RhbGxpbmcgZnJvbSBHaXQgb3IgR2l0SHViLCB0aGUgcGFja2FnZSBuYW1lLCBhcyBkZWZpbmVkIGluIHRoZSBwbHVnaW4ncyBgICtcbiAgICAgICAgICAgIGBwYWNrYWdlLmpzb24gZmlsZSBpbiB0aGUgXCJuYW1lXCIgZmllbGQsIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHksIGFuZCBgICtcbiAgICAgICAgICAgIGBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBpbnN0YWxsIHdpbGwgcHJvYmFibHkgZmFpbC5gLFxuICAgICAgZGVzdDogJ3BhY2thZ2VOYW1lJyxcbiAgICB9XSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gbWFrZVVuaW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgZXhhbXBsZTogdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgICAgaGVscDogJ05hbWUgb2YgdGhlIGRyaXZlciB0byB1bmluc3RhbGwnLFxuICAgIH1dLFxuICBdO1xufVxuXG5mdW5jdGlvbiBtYWtlVXBkYXRlQXJncyAodHlwZSkge1xuICByZXR1cm4gW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBleGFtcGxlOiB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byB1cGRhdGUsIG9yIHRoZSB3b3JkIFwiaW5zdGFsbGVkXCIgdG8gdXBkYXRlIGFsbCBpbnN0YWxsZWQgYCArXG4gICAgICAgICAgICBgJHt0eXBlfXMuIFRvIHNlZSBhdmFpbGFibGUgdXBkYXRlcywgcnVuIFwiYXBwaXVtICR7dHlwZX0gbGlzdCAtLWluc3RhbGxlZCAtLXVwZGF0ZXNcImAsXG4gICAgfV0sXG4gICAgW1snLS11bnNhZmUnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgIGFjdGlvbjogJ3N0b3JlVHJ1ZScsXG4gICAgICBuYXJnczogMCxcbiAgICAgIGhlbHA6IGBJbmNsdWRlIHVwZGF0ZXMgdGhhdCBtaWdodCBoYXZlIGEgbmV3IG1ham9yIHJldmlzaW9uLCBhbmQgcG90ZW50aWFsbHkgaW5jbHVkZSBgICtcbiAgICAgICAgICAgIGBicmVha2luZyBjaGFuZ2VzYCxcbiAgICB9XSxcbiAgXTtcbn1cblxuZm9yIChjb25zdCB0eXBlIG9mIFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSB7XG4gIGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCA9IG1ha2VMaXN0QXJncyh0eXBlKTtcbiAgZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsID0gbWFrZUluc3RhbGxBcmdzKHR5cGUpO1xuICBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCA9IG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpO1xuICBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSA9IG1ha2VVcGRhdGVBcmdzKHR5cGUpO1xufVxuXG5leHBvcnQge1xuICBzaGFyZWRBcmdzLFxuICBzZXJ2ZXJBcmdzLFxuICBleHRlbnNpb25BcmdzLFxuICBVU0VfQUxMX1BMVUdJTlMsXG59O1xuIl0sImZpbGUiOiJsaWIvY2xpL2FyZ3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
120
|
+
const serverArgsDisallowedInConfig = new Map([[['--shell'], {
|
|
121
|
+
required: false,
|
|
122
|
+
help: 'Enter REPL mode',
|
|
123
|
+
action: 'store_const',
|
|
124
|
+
const: true,
|
|
125
|
+
dest: 'shell'
|
|
126
|
+
}], [['--show-build-info'], {
|
|
127
|
+
dest: 'showBuildInfo',
|
|
128
|
+
action: 'store_const',
|
|
129
|
+
const: true,
|
|
130
|
+
required: false,
|
|
131
|
+
help: 'Show info about the Appium build and exit'
|
|
132
|
+
}], [['--show-config'], {
|
|
133
|
+
dest: 'showConfig',
|
|
134
|
+
action: 'store_const',
|
|
135
|
+
const: true,
|
|
136
|
+
required: false,
|
|
137
|
+
help: 'Show the current Appium configuration and exit'
|
|
138
|
+
}], [['--config'], {
|
|
139
|
+
dest: 'configFile',
|
|
140
|
+
type: 'string',
|
|
141
|
+
required: false,
|
|
142
|
+
help: 'Explicit path to Appium configuration file'
|
|
143
|
+
}]]);
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvYXJncy5qcyJdLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiSU5TVEFMTF9UWVBFU19BUlJBWSIsIklOU1RBTExfVFlQRVMiLCJFWFRFTlNJT05fVFlQRVMiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiZ2xvYmFsRXh0ZW5zaW9uQXJncyIsIk1hcCIsInJlcXVpcmVkIiwiZGVmYXVsdCIsImFjdGlvbiIsImhlbHAiLCJkZXN0IiwiZ2V0RXh0ZW5zaW9uQXJncyIsIl8iLCJtZW1vaXplIiwiZXh0ZW5zaW9uQXJncyIsInR5cGUiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwibWFrZUxpc3RBcmdzIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIm1ha2VJbnN0YWxsQXJncyIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIm1ha2VVbmluc3RhbGxBcmdzIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwibWFrZVVwZGF0ZUFyZ3MiLCJFWFRfU1VCQ09NTUFORF9SVU4iLCJtYWtlUnVuQXJncyIsImNob2ljZXMiLCJqb2luIiwiZ2V0U2VydmVyQXJncyIsInNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWciLCJjb25zdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EsTUFBTUEsY0FBYyxHQUFHLFVBQXZCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGVBQXZCO0FBTUEsTUFBTUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHQyw4QkFBSixDQUE1QjtBQUdBLE1BQU1DLGVBQWUsR0FBRyxJQUFJQyxHQUFKLENBQVEsQ0FBQ0Msc0JBQUQsRUFBY0Msc0JBQWQsQ0FBUixDQUF4QjtBQUlBLE1BQU1DLG1CQUFtQixHQUFHLElBQUlDLEdBQUosQ0FBUSxDQUNsQyxDQUFDLENBQUMsUUFBRCxDQUFELEVBQWE7QUFDWEMsRUFBQUEsUUFBUSxFQUFF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LEVBRUU7QUFDRUMsRUFBQUEsSUFBSSxFQUFFLFlBRFI7QUFFRUssRUFBQUEsSUFBSSxFQUFFLFFBRlI7QUFHRVQsRUFBQUEsUUFBUSxFQUFFLEtBSFo7QUFJRUcsRUFBQUEsSUFBSSxFQUFFO0FBSlIsQ0FGRixDQS9CMkMsQ0FBUixDQUFyQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCwgRVhUX1NVQkNPTU1BTkRfTElTVCwgRVhUX1NVQkNPTU1BTkRfUlVOLCBFWFRfU1VCQ09NTUFORF9VTklOU1RBTEwsIEVYVF9TVUJDT01NQU5EX1VQREFURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVTIH0gZnJvbSAnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgdG9QYXJzZXJBcmdzIH0gZnJvbSAnLi4vc2NoZW1hL2NsaS1hcmdzJztcbmNvbnN0IERSSVZFUl9FWEFNUExFID0gJ3hjdWl0ZXN0JztcbmNvbnN0IFBMVUdJTl9FWEFNUExFID0gJ2ZpbmRfYnlfaW1hZ2UnO1xuXG4vKipcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgcGFzcyB0aGUgYXJyYXkgaW50byBgYXJncGFyc2VgLiBgYXJncGFyc2VgIGlzIGJhZCBhbmQgbXV0YXRlcyB0aGluZ3MuIFdlIGRvbid0IHdhbnQgdGhhdC5cbiAqIEJhZCBgYXJncGFyc2VgISBCYWQhXG4gKi9cbmNvbnN0IElOU1RBTExfVFlQRVNfQVJSQVkgPSBbLi4uSU5TVEFMTF9UWVBFU107XG5cbi8qKiBAdHlwZSB7U2V0PEV4dGVuc2lvblR5cGU+fSAqL1xuY29uc3QgRVhURU5TSU9OX1RZUEVTID0gbmV3IFNldChbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSk7XG5cbi8vIHRoaXMgc2V0IG9mIGFyZ3Mgd29ya3MgZm9yIGJvdGggZHJpdmVycyBhbmQgcGx1Z2lucyAoJ2V4dGVuc2lvbnMnKVxuLyoqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfSAqL1xuY29uc3QgZ2xvYmFsRXh0ZW5zaW9uQXJncyA9IG5ldyBNYXAoW1xuICBbWyctLWpzb24nXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBoZWxwOiAnVXNlIEpTT04gZm9yIG91dHB1dCBmb3JtYXQnLFxuICAgIGRlc3Q6ICdqc29uJ1xuICB9XVxuXSk7XG5cbi8qKlxuICogQnVpbGRzIGEgUmVjb3JkIG9mIGV4dGVuc2lvbiB0eXBlcyB0byBhIFJlY29yZCBvZiBzdWJjb21tYW5kcyB0byB0aGVpciBhcmd1bWVudCBkZWZpbml0aW9uc1xuICovXG5jb25zdCBnZXRFeHRlbnNpb25BcmdzID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldEV4dGVuc2lvbkFyZ3MgKCkge1xuICBjb25zdCBleHRlbnNpb25BcmdzID0ge307XG4gIGZvciAoY29uc3QgdHlwZSBvZiBFWFRFTlNJT05fVFlQRVMpIHtcbiAgICBleHRlbnNpb25BcmdzW3R5cGVdID0ge1xuICAgICAgW0VYVF9TVUJDT01NQU5EX0xJU1RdOiBtYWtlTGlzdEFyZ3ModHlwZSksXG4gICAgICBbRVhUX1NVQkNPTU1BTkRfSU5TVEFMTF06IG1ha2VJbnN0YWxsQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9VTklOU1RBTExdOiBtYWtlVW5pbnN0YWxsQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9VUERBVEVdOiBtYWtlVXBkYXRlQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9SVU5dOiBtYWtlUnVuQXJncyh0eXBlKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiAvKiogQHR5cGUge1JlY29yZDxFeHRlbnNpb25UeXBlLCBSZWNvcmQ8aW1wb3J0KCcuLi8uLi90eXBlcy9jbGknKS5DbGlFeHRlbnNpb25TdWJjb21tYW5kLEFyZ3VtZW50RGVmaW5pdGlvbnM+Pn0gKi8oZXh0ZW5zaW9uQXJncyk7XG59KTtcblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBsaXN0YCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlLlxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZUxpc3RBcmdzICh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbJy0taW5zdGFsbGVkJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICBoZWxwOiBgTGlzdCBvbmx5IGluc3RhbGxlZCAke3R5cGV9c2AsXG4gICAgICBkZXN0OiAnc2hvd0luc3RhbGxlZCdcbiAgICB9XSxcbiAgICBbWyctLXVwZGF0ZXMnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgIGhlbHA6ICdTaG93IGluZm9ybWF0aW9uIGFib3V0IG5ld2VyIHZlcnNpb25zJyxcbiAgICAgIGRlc3Q6ICdzaG93VXBkYXRlcydcbiAgICB9XVxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBpbnN0YWxsYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlSW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byBpbnN0YWxsLCBmb3IgZXhhbXBsZTogYCArXG4gICAgICAgICAgICB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snLS1zb3VyY2UnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIGNob2ljZXM6IElOU1RBTExfVFlQRVNfQVJSQVksXG4gICAgICBoZWxwOiBgV2hlcmUgdG8gbG9vayBmb3IgdGhlICR7dHlwZX0gaWYgaXQgaXMgbm90IG9uZSBvZiBBcHBpdW0ncyB2ZXJpZmllZCBgICtcbiAgICAgICAgICAgIGAke3R5cGV9cy4gUG9zc2libGUgdmFsdWVzOiAke0lOU1RBTExfVFlQRVNfQVJSQVkuam9pbignLCAnKX1gLFxuICAgICAgZGVzdDogJ2luc3RhbGxUeXBlJ1xuICAgIH1dLFxuICAgIFtbJy0tcGFja2FnZSddLCB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgSWYgaW5zdGFsbGluZyBmcm9tIEdpdCBvciBHaXRIdWIsIHRoZSBwYWNrYWdlIG5hbWUsIGFzIGRlZmluZWQgaW4gdGhlIHBsdWdpbidzIGAgK1xuICAgICAgICAgICAgYHBhY2thZ2UuanNvbiBmaWxlIGluIHRoZSBcIm5hbWVcIiBmaWVsZCwgY2Fubm90IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSwgYW5kIGAgK1xuICAgICAgICAgICAgYHNob3VsZCBiZSByZXBvcnRlZCBoZXJlLCBvdGhlcndpc2UgdGhlIGluc3RhbGwgd2lsbCBwcm9iYWJseSBmYWlsLmAsXG4gICAgICBkZXN0OiAncGFja2FnZU5hbWUnLFxuICAgIH1dLFxuICBdKTtcbn1cblxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYHVuaW5zdGFsbGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZVVuaW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiAnTmFtZSBvZiB0aGUgZHJpdmVyIHRvIHVuaW5zdGFsbCwgZm9yIGV4YW1wbGU6ICcgK1xuICAgICAgICAgICAgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFXG4gICAgfV0sXG4gIF0pO1xufVxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYHVwZGF0ZWAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZVVwZGF0ZUFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byB1cGRhdGUsIG9yIHRoZSB3b3JkIFwiaW5zdGFsbGVkXCIgdG8gdXBkYXRlIGFsbCBpbnN0YWxsZWQgYCArXG4gICAgICAgICAgICBgJHt0eXBlfXMuIFRvIHNlZSBhdmFpbGFibGUgdXBkYXRlcywgcnVuIFwiYXBwaXVtICR7dHlwZX0gbGlzdCAtLWluc3RhbGxlZCAtLXVwZGF0ZXNcIi4gYCArXG4gICAgICAgICAgICAnRm9yIGV4YW1wbGU6ICcgKyB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snLS11bnNhZmUnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgIGhlbHA6IGBJbmNsdWRlIHVwZGF0ZXMgdGhhdCBtaWdodCBoYXZlIGEgbmV3IG1ham9yIHJldmlzaW9uLCBhbmQgcG90ZW50aWFsbHkgaW5jbHVkZSBgICtcbiAgICAgICAgICAgIGBicmVha2luZyBjaGFuZ2VzYCxcbiAgICB9XSxcbiAgXSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgcnVuYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlUnVuQXJncyAodHlwZSkge1xuICByZXR1cm4gbmV3IE1hcChbXG4gICAgLi4uZ2xvYmFsRXh0ZW5zaW9uQXJncyxcbiAgICBbW3R5cGVdLCB7XG4gICAgICB0eXBlOiAnc3RyJyxcbiAgICAgIGhlbHA6IGBOYW1lIG9mIHRoZSAke3R5cGV9IHRvIHJ1biBhIHNjcmlwdCBmcm9tLCBmb3IgZXhhbXBsZTogYCArXG4gICAgICAgICAgICB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snc2NyaXB0TmFtZSddLCB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgc2NyaXB0IHRvIHJ1biBmcm9tIHRoZSAke3R5cGV9LiBUaGUgc2NyaXB0IG5hbWUgbXVzdCBiZSBjYWNoZWQgYCArXG4gICAgICAgICAgICBgaW5zaWRlIHRoZSBcInNjcmlwdHNcIiBmaWVsZCB1bmRlciBcImFwcGl1bVwiIGluc2lkZSB0aGUgJHt0eXBlfSdzIFwicGFja2FnZS5qc29uXCIgZmlsZWBcbiAgICB9XSxcbiAgXSk7XG59XG5cbi8qKlxuICogRGVyaXZlcyB0aGUgb3B0aW9ucyBmb3IgdGhlIGBzZXJ2ZXJgIGNvbW1hbmQgZnJvbSB0aGUgc2NoZW1hLCBhbmQgYWRkcyB0aGUgYXJndW1lbnRzXG4gKiB3aGljaCBhcmUgZGlzYWxsb3dlZCBpbiB0aGUgY29uZmlnIGZpbGUuXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyQXJncyAoKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi50b1BhcnNlckFyZ3MoKSxcbiAgICAuLi5zZXJ2ZXJBcmdzRGlzYWxsb3dlZEluQ29uZmlnLFxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGVzZSBkb24ndCBtYWtlIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGEgY29uZmlnIGZpbGUgZm9yIG9idmlvdXMgcmVhc29ucy5cbiAqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5jb25zdCBzZXJ2ZXJBcmdzRGlzYWxsb3dlZEluQ29uZmlnID0gbmV3IE1hcChbXG4gIFtcbiAgICBbJy0tc2hlbGwnXSxcbiAgICB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnRW50ZXIgUkVQTCBtb2RlJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgZGVzdDogJ3NoZWxsJyxcbiAgICB9LFxuICBdLFxuICBbXG4gICAgWyctLXNob3ctYnVpbGQtaW5mbyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdzaG93QnVpbGRJbmZvJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ1Nob3cgaW5mbyBhYm91dCB0aGUgQXBwaXVtIGJ1aWxkIGFuZCBleGl0JyxcbiAgICB9LFxuICBdLFxuICBbXG4gICAgWyctLXNob3ctY29uZmlnJ10sXG4gICAge1xuICAgICAgZGVzdDogJ3Nob3dDb25maWcnLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfY29uc3QnLFxuICAgICAgY29uc3Q6IHRydWUsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnU2hvdyB0aGUgY3VycmVudCBBcHBpdW0gY29uZmlndXJhdGlvbiBhbmQgZXhpdCcsXG4gICAgfVxuICBdLFxuICBbXG4gICAgWyctLWNvbmZpZyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdjb25maWdGaWxlJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ0V4cGxpY2l0IHBhdGggdG8gQXBwaXVtIGNvbmZpZ3VyYXRpb24gZmlsZScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQge1xuICBnZXRTZXJ2ZXJBcmdzLFxuICBnZXRFeHRlbnNpb25BcmdzXG59O1xuXG4vKipcbiAqIEFsaWFzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9leHRlbnNpb24vbWFuaWZlc3QnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cblxuLyoqXG4gKiBBIHR1cGxlIG9mIGFyZ3VtZW50IGFsaWFzZXMgYW5kIGFyZ3VtZW50IG9wdGlvbnNcbiAqIEB0eXBlZGVmIHtNYXA8c3RyaW5nW10saW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9ucz59IEFyZ3VtZW50RGVmaW5pdGlvbnNcbiAqL1xuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @extends {ExtensionCommand<import('../extension/manifest').DriverType>}
|
|
3
|
+
*/
|
|
4
|
+
export default class DriverCommand extends ExtensionCommand<"driver"> {
|
|
5
|
+
/**
|
|
6
|
+
* @param {DriverCommandOptions} opts
|
|
7
|
+
*/
|
|
8
|
+
constructor({ config, json }: DriverCommandOptions);
|
|
9
|
+
install({ driver, installType, packageName }: {
|
|
10
|
+
driver: any;
|
|
11
|
+
installType: any;
|
|
12
|
+
packageName: any;
|
|
13
|
+
}): Promise<import("./extension-command").ExtRecord<"driver">>;
|
|
14
|
+
uninstall({ driver }: {
|
|
15
|
+
driver: any;
|
|
16
|
+
}): Promise<import("./extension-command").ExtRecord<"driver">>;
|
|
17
|
+
update({ driver, unsafe }: {
|
|
18
|
+
driver: any;
|
|
19
|
+
unsafe: any;
|
|
20
|
+
}): Promise<import("./extension-command").ExtensionUpdateResult>;
|
|
21
|
+
run({ driver, scriptName }: {
|
|
22
|
+
driver: any;
|
|
23
|
+
scriptName: any;
|
|
24
|
+
}): Promise<import("./extension-command").RunOutput>;
|
|
25
|
+
getPostInstallText({ extName, extData }: {
|
|
26
|
+
extName: any;
|
|
27
|
+
extData: any;
|
|
28
|
+
}): string;
|
|
29
|
+
validateExtensionFields(appiumPkgData: any): void;
|
|
30
|
+
}
|
|
31
|
+
export type DriverCommandOptions = {
|
|
32
|
+
config: import('../extension/extension-config').ExtensionConfig<import('../extension/manifest').DriverType>;
|
|
33
|
+
json: boolean;
|
|
34
|
+
};
|
|
35
|
+
import ExtensionCommand from "./extension-command";
|
|
36
|
+
//# sourceMappingURL=driver-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/driver-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IAEE;;OAEG;IACH,8BAFW,oBAAoB,EAK9B;IAED;;;;mEAEC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;yDAEC;IAED;;;eAIC;IAED,kDAUC;CAEF;;YAIa,OAAO,+BAA+B,EAAE,eAAe,CAAC,OAAO,uBAAuB,EAAE,UAAU,CAAC;UACnG,OAAO"}
|