@limrun/cli 0.3.0 → 0.4.0

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 (315) hide show
  1. package/README.md +127 -99
  2. package/bin/run.js +60 -5
  3. package/dist/base-command.d.ts +6 -0
  4. package/dist/base-command.d.ts.map +1 -1
  5. package/dist/base-command.js +28 -7
  6. package/dist/base-command.js.map +1 -1
  7. package/dist/commands/android/connect.d.ts +2 -1
  8. package/dist/commands/android/connect.d.ts.map +1 -1
  9. package/dist/commands/android/connect.js +13 -4
  10. package/dist/commands/android/connect.js.map +1 -1
  11. package/dist/commands/android/create.d.ts +1 -2
  12. package/dist/commands/android/create.d.ts.map +1 -1
  13. package/dist/commands/android/create.js +37 -32
  14. package/dist/commands/android/create.js.map +1 -1
  15. package/dist/commands/android/delete.d.ts +2 -1
  16. package/dist/commands/android/delete.d.ts.map +1 -1
  17. package/dist/commands/android/delete.js +6 -3
  18. package/dist/commands/android/delete.js.map +1 -1
  19. package/dist/commands/android/element-tree.d.ts +15 -0
  20. package/dist/commands/android/element-tree.d.ts.map +1 -0
  21. package/dist/commands/android/element-tree.js +62 -0
  22. package/dist/commands/android/element-tree.js.map +1 -0
  23. package/dist/commands/android/find-element.d.ts +27 -0
  24. package/dist/commands/android/find-element.d.ts.map +1 -0
  25. package/dist/commands/android/find-element.js +72 -0
  26. package/dist/commands/android/find-element.js.map +1 -0
  27. package/dist/commands/android/get.d.ts +2 -1
  28. package/dist/commands/android/get.d.ts.map +1 -1
  29. package/dist/commands/android/get.js +3 -3
  30. package/dist/commands/android/get.js.map +1 -1
  31. package/dist/commands/android/install-app.d.ts +17 -0
  32. package/dist/commands/android/install-app.d.ts.map +1 -0
  33. package/dist/commands/android/install-app.js +72 -0
  34. package/dist/commands/android/install-app.js.map +1 -0
  35. package/dist/commands/android/list.d.ts +2 -0
  36. package/dist/commands/android/list.d.ts.map +1 -1
  37. package/dist/commands/android/list.js +17 -5
  38. package/dist/commands/android/list.js.map +1 -1
  39. package/dist/commands/android/open-url.d.ts +17 -0
  40. package/dist/commands/android/open-url.d.ts.map +1 -0
  41. package/dist/commands/android/open-url.js +53 -0
  42. package/dist/commands/android/open-url.js.map +1 -0
  43. package/dist/commands/android/press-key.d.ts +18 -0
  44. package/dist/commands/android/press-key.d.ts.map +1 -0
  45. package/dist/commands/android/press-key.js +54 -0
  46. package/dist/commands/android/press-key.js.map +1 -0
  47. package/dist/commands/android/record.d.ts +21 -0
  48. package/dist/commands/android/record.d.ts.map +1 -0
  49. package/dist/commands/android/record.js +105 -0
  50. package/dist/commands/android/record.js.map +1 -0
  51. package/dist/commands/android/screenshot.d.ts +16 -0
  52. package/dist/commands/android/screenshot.d.ts.map +1 -0
  53. package/dist/commands/android/screenshot.js +70 -0
  54. package/dist/commands/android/screenshot.js.map +1 -0
  55. package/dist/commands/android/scroll.d.ts +31 -0
  56. package/dist/commands/android/scroll.d.ts.map +1 -0
  57. package/dist/commands/android/scroll.js +73 -0
  58. package/dist/commands/android/scroll.js.map +1 -0
  59. package/dist/commands/android/tap-element.d.ts +26 -0
  60. package/dist/commands/android/tap-element.d.ts.map +1 -0
  61. package/dist/commands/android/tap-element.js +62 -0
  62. package/dist/commands/android/tap-element.js.map +1 -0
  63. package/dist/commands/android/tap.d.ts +24 -0
  64. package/dist/commands/android/tap.d.ts.map +1 -0
  65. package/dist/commands/android/tap.js +57 -0
  66. package/dist/commands/android/tap.js.map +1 -0
  67. package/dist/commands/android/type.d.ts +30 -0
  68. package/dist/commands/android/type.d.ts.map +1 -0
  69. package/dist/commands/android/type.js +55 -0
  70. package/dist/commands/android/type.js.map +1 -0
  71. package/dist/commands/asset/delete.d.ts +2 -1
  72. package/dist/commands/asset/delete.d.ts.map +1 -1
  73. package/dist/commands/asset/delete.js +2 -2
  74. package/dist/commands/asset/delete.js.map +1 -1
  75. package/dist/commands/asset/list.d.ts +3 -1
  76. package/dist/commands/asset/list.d.ts.map +1 -1
  77. package/dist/commands/asset/list.js +22 -6
  78. package/dist/commands/asset/list.js.map +1 -1
  79. package/dist/commands/asset/pull.d.ts +2 -1
  80. package/dist/commands/asset/pull.d.ts.map +1 -1
  81. package/dist/commands/asset/pull.js +18 -6
  82. package/dist/commands/asset/pull.js.map +1 -1
  83. package/dist/commands/asset/push.d.ts +2 -1
  84. package/dist/commands/asset/push.d.ts.map +1 -1
  85. package/dist/commands/asset/push.js +5 -6
  86. package/dist/commands/asset/push.js.map +1 -1
  87. package/dist/commands/exec/element-tree.d.ts +2 -1
  88. package/dist/commands/exec/element-tree.d.ts.map +1 -1
  89. package/dist/commands/exec/element-tree.js +6 -2
  90. package/dist/commands/exec/element-tree.js.map +1 -1
  91. package/dist/commands/exec/install-app.d.ts +1 -1
  92. package/dist/commands/exec/install-app.d.ts.map +1 -1
  93. package/dist/commands/exec/install-app.js +10 -5
  94. package/dist/commands/exec/install-app.js.map +1 -1
  95. package/dist/commands/exec/open-url.d.ts +2 -1
  96. package/dist/commands/exec/open-url.d.ts.map +1 -1
  97. package/dist/commands/exec/open-url.js +9 -3
  98. package/dist/commands/exec/open-url.js.map +1 -1
  99. package/dist/commands/exec/perform.d.ts +17 -0
  100. package/dist/commands/exec/perform.d.ts.map +1 -0
  101. package/dist/commands/exec/perform.js +232 -0
  102. package/dist/commands/exec/perform.js.map +1 -0
  103. package/dist/commands/exec/press-key.d.ts +2 -1
  104. package/dist/commands/exec/press-key.d.ts.map +1 -1
  105. package/dist/commands/exec/press-key.js +9 -3
  106. package/dist/commands/exec/press-key.js.map +1 -1
  107. package/dist/commands/exec/record.d.ts +2 -1
  108. package/dist/commands/exec/record.d.ts.map +1 -1
  109. package/dist/commands/exec/record.js +20 -6
  110. package/dist/commands/exec/record.js.map +1 -1
  111. package/dist/commands/exec/screenshot.d.ts +2 -1
  112. package/dist/commands/exec/screenshot.d.ts.map +1 -1
  113. package/dist/commands/exec/screenshot.js +9 -3
  114. package/dist/commands/exec/screenshot.js.map +1 -1
  115. package/dist/commands/exec/scroll.d.ts +2 -1
  116. package/dist/commands/exec/scroll.d.ts.map +1 -1
  117. package/dist/commands/exec/scroll.js +7 -4
  118. package/dist/commands/exec/scroll.js.map +1 -1
  119. package/dist/commands/exec/tap-element.d.ts +2 -1
  120. package/dist/commands/exec/tap-element.d.ts.map +1 -1
  121. package/dist/commands/exec/tap-element.js +16 -6
  122. package/dist/commands/exec/tap-element.js.map +1 -1
  123. package/dist/commands/exec/tap.d.ts +2 -1
  124. package/dist/commands/exec/tap.d.ts.map +1 -1
  125. package/dist/commands/exec/tap.js +13 -4
  126. package/dist/commands/exec/tap.js.map +1 -1
  127. package/dist/commands/exec/type.d.ts +3 -2
  128. package/dist/commands/exec/type.d.ts.map +1 -1
  129. package/dist/commands/exec/type.js +12 -6
  130. package/dist/commands/exec/type.js.map +1 -1
  131. package/dist/commands/ios/app-log.d.ts +19 -0
  132. package/dist/commands/ios/app-log.d.ts.map +1 -0
  133. package/dist/commands/ios/app-log.js +93 -0
  134. package/dist/commands/ios/app-log.js.map +1 -0
  135. package/dist/commands/ios/cp.d.ts +18 -0
  136. package/dist/commands/ios/cp.d.ts.map +1 -0
  137. package/dist/commands/ios/cp.js +66 -0
  138. package/dist/commands/ios/cp.js.map +1 -0
  139. package/dist/commands/ios/create.d.ts +1 -1
  140. package/dist/commands/ios/create.d.ts.map +1 -1
  141. package/dist/commands/ios/create.js +55 -24
  142. package/dist/commands/ios/create.js.map +1 -1
  143. package/dist/commands/ios/delete.d.ts +2 -1
  144. package/dist/commands/ios/delete.d.ts.map +1 -1
  145. package/dist/commands/ios/delete.js +3 -3
  146. package/dist/commands/ios/delete.js.map +1 -1
  147. package/dist/commands/ios/element-tree.d.ts +15 -0
  148. package/dist/commands/ios/element-tree.d.ts.map +1 -0
  149. package/dist/commands/ios/element-tree.js +59 -0
  150. package/dist/commands/ios/element-tree.js.map +1 -0
  151. package/dist/commands/ios/get.d.ts +2 -1
  152. package/dist/commands/ios/get.d.ts.map +1 -1
  153. package/dist/commands/ios/get.js +3 -3
  154. package/dist/commands/ios/get.js.map +1 -1
  155. package/dist/commands/{delete/index.d.ts → ios/info.d.ts} +6 -5
  156. package/dist/commands/ios/info.d.ts.map +1 -0
  157. package/dist/commands/ios/info.js +60 -0
  158. package/dist/commands/ios/info.js.map +1 -0
  159. package/dist/commands/ios/install-app.d.ts +19 -0
  160. package/dist/commands/ios/install-app.d.ts.map +1 -0
  161. package/dist/commands/ios/install-app.js +99 -0
  162. package/dist/commands/ios/install-app.js.map +1 -0
  163. package/dist/commands/ios/launch-app.d.ts +2 -1
  164. package/dist/commands/ios/launch-app.d.ts.map +1 -1
  165. package/dist/commands/ios/launch-app.js +5 -3
  166. package/dist/commands/ios/launch-app.js.map +1 -1
  167. package/dist/commands/ios/list-apps.d.ts +2 -1
  168. package/dist/commands/ios/list-apps.d.ts.map +1 -1
  169. package/dist/commands/ios/list-apps.js +9 -3
  170. package/dist/commands/ios/list-apps.js.map +1 -1
  171. package/dist/commands/ios/list.d.ts +2 -0
  172. package/dist/commands/ios/list.d.ts.map +1 -1
  173. package/dist/commands/ios/list.js +17 -5
  174. package/dist/commands/ios/list.js.map +1 -1
  175. package/dist/commands/ios/log.d.ts +3 -1
  176. package/dist/commands/ios/log.d.ts.map +1 -1
  177. package/dist/commands/ios/log.js +31 -8
  178. package/dist/commands/ios/log.js.map +1 -1
  179. package/dist/commands/ios/lsof.d.ts +15 -0
  180. package/dist/commands/ios/lsof.d.ts.map +1 -0
  181. package/dist/commands/ios/lsof.js +49 -0
  182. package/dist/commands/ios/lsof.js.map +1 -0
  183. package/dist/commands/ios/open-url.d.ts +17 -0
  184. package/dist/commands/ios/open-url.d.ts.map +1 -0
  185. package/dist/commands/ios/open-url.js +53 -0
  186. package/dist/commands/ios/open-url.js.map +1 -0
  187. package/dist/commands/ios/perform.d.ts +17 -0
  188. package/dist/commands/ios/perform.d.ts.map +1 -0
  189. package/dist/commands/ios/perform.js +230 -0
  190. package/dist/commands/ios/perform.js.map +1 -0
  191. package/dist/commands/ios/press-key.d.ts +18 -0
  192. package/dist/commands/ios/press-key.d.ts.map +1 -0
  193. package/dist/commands/ios/press-key.js +54 -0
  194. package/dist/commands/ios/press-key.js.map +1 -0
  195. package/dist/commands/ios/record.d.ts +21 -0
  196. package/dist/commands/ios/record.d.ts.map +1 -0
  197. package/dist/commands/ios/record.js +106 -0
  198. package/dist/commands/ios/record.js.map +1 -0
  199. package/dist/commands/ios/screenshot.d.ts +16 -0
  200. package/dist/commands/ios/screenshot.d.ts.map +1 -0
  201. package/dist/commands/ios/screenshot.js +69 -0
  202. package/dist/commands/ios/screenshot.js.map +1 -0
  203. package/dist/commands/ios/scroll.d.ts +18 -0
  204. package/dist/commands/ios/scroll.d.ts.map +1 -0
  205. package/dist/commands/ios/scroll.js +58 -0
  206. package/dist/commands/ios/scroll.js.map +1 -0
  207. package/dist/commands/ios/simctl.d.ts +16 -0
  208. package/dist/commands/ios/simctl.d.ts.map +1 -0
  209. package/dist/commands/ios/simctl.js +75 -0
  210. package/dist/commands/ios/simctl.js.map +1 -0
  211. package/dist/commands/ios/sync.d.ts +22 -0
  212. package/dist/commands/ios/sync.d.ts.map +1 -0
  213. package/dist/commands/ios/sync.js +100 -0
  214. package/dist/commands/ios/sync.js.map +1 -0
  215. package/dist/commands/ios/syslog.d.ts +15 -0
  216. package/dist/commands/ios/syslog.d.ts.map +1 -0
  217. package/dist/commands/ios/syslog.js +65 -0
  218. package/dist/commands/ios/syslog.js.map +1 -0
  219. package/dist/commands/ios/tap-element.d.ts +22 -0
  220. package/dist/commands/ios/tap-element.d.ts.map +1 -0
  221. package/dist/commands/ios/tap-element.js +94 -0
  222. package/dist/commands/ios/tap-element.js.map +1 -0
  223. package/dist/commands/ios/tap.d.ts +24 -0
  224. package/dist/commands/ios/tap.d.ts.map +1 -0
  225. package/dist/commands/ios/tap.js +57 -0
  226. package/dist/commands/ios/tap.js.map +1 -0
  227. package/dist/commands/ios/terminate-app.d.ts +2 -1
  228. package/dist/commands/ios/terminate-app.d.ts.map +1 -1
  229. package/dist/commands/ios/terminate-app.js +9 -3
  230. package/dist/commands/ios/terminate-app.js.map +1 -1
  231. package/dist/commands/ios/type.d.ts +18 -0
  232. package/dist/commands/ios/type.d.ts.map +1 -0
  233. package/dist/commands/ios/type.js +55 -0
  234. package/dist/commands/ios/type.js.map +1 -0
  235. package/dist/commands/ios/xcodebuild.d.ts +16 -0
  236. package/dist/commands/ios/xcodebuild.d.ts.map +1 -0
  237. package/dist/commands/ios/xcodebuild.js +61 -0
  238. package/dist/commands/ios/xcodebuild.js.map +1 -0
  239. package/dist/commands/ios/xcrun.d.ts +16 -0
  240. package/dist/commands/ios/xcrun.d.ts.map +1 -0
  241. package/dist/commands/ios/xcrun.js +62 -0
  242. package/dist/commands/ios/xcrun.js.map +1 -0
  243. package/dist/commands/login.d.ts +8 -2
  244. package/dist/commands/login.d.ts.map +1 -1
  245. package/dist/commands/login.js +7 -3
  246. package/dist/commands/login.js.map +1 -1
  247. package/dist/commands/logout.d.ts +8 -2
  248. package/dist/commands/logout.d.ts.map +1 -1
  249. package/dist/commands/logout.js +7 -3
  250. package/dist/commands/logout.js.map +1 -1
  251. package/dist/commands/session/start.d.ts +1 -0
  252. package/dist/commands/session/start.d.ts.map +1 -1
  253. package/dist/commands/session/start.js +4 -2
  254. package/dist/commands/session/start.js.map +1 -1
  255. package/dist/commands/session/status.d.ts +2 -0
  256. package/dist/commands/session/status.d.ts.map +1 -1
  257. package/dist/commands/session/status.js +2 -1
  258. package/dist/commands/session/status.js.map +1 -1
  259. package/dist/commands/session/stop.d.ts +5 -2
  260. package/dist/commands/session/stop.d.ts.map +1 -1
  261. package/dist/commands/session/stop.js +12 -5
  262. package/dist/commands/session/stop.js.map +1 -1
  263. package/dist/commands/{build.d.ts → xcode/build.d.ts} +6 -3
  264. package/dist/commands/xcode/build.d.ts.map +1 -0
  265. package/dist/commands/xcode/build.js +117 -0
  266. package/dist/commands/xcode/build.js.map +1 -0
  267. package/dist/commands/xcode/create.d.ts +1 -1
  268. package/dist/commands/xcode/create.d.ts.map +1 -1
  269. package/dist/commands/xcode/create.js +28 -14
  270. package/dist/commands/xcode/create.js.map +1 -1
  271. package/dist/commands/xcode/delete.d.ts +2 -1
  272. package/dist/commands/xcode/delete.d.ts.map +1 -1
  273. package/dist/commands/xcode/delete.js +4 -4
  274. package/dist/commands/xcode/delete.js.map +1 -1
  275. package/dist/commands/xcode/get.d.ts +2 -1
  276. package/dist/commands/xcode/get.d.ts.map +1 -1
  277. package/dist/commands/xcode/get.js +3 -3
  278. package/dist/commands/xcode/get.js.map +1 -1
  279. package/dist/commands/xcode/list.d.ts +2 -0
  280. package/dist/commands/xcode/list.d.ts.map +1 -1
  281. package/dist/commands/xcode/list.js +16 -4
  282. package/dist/commands/xcode/list.js.map +1 -1
  283. package/dist/commands/{sync.d.ts → xcode/sync.d.ts} +6 -3
  284. package/dist/commands/xcode/sync.d.ts.map +1 -0
  285. package/dist/commands/xcode/sync.js +107 -0
  286. package/dist/commands/xcode/sync.js.map +1 -0
  287. package/dist/lib/android-selector.d.ts +50 -0
  288. package/dist/lib/android-selector.d.ts.map +1 -0
  289. package/dist/lib/android-selector.js +103 -0
  290. package/dist/lib/android-selector.js.map +1 -0
  291. package/dist/lib/daemon-client.d.ts +1 -1
  292. package/dist/lib/daemon-client.d.ts.map +1 -1
  293. package/dist/lib/daemon-client.js +2 -2
  294. package/dist/lib/daemon-client.js.map +1 -1
  295. package/dist/lib/daemon.d.ts.map +1 -1
  296. package/dist/lib/daemon.js +37 -3
  297. package/dist/lib/daemon.js.map +1 -1
  298. package/dist/lib/ignore-patterns.d.ts +2 -0
  299. package/dist/lib/ignore-patterns.d.ts.map +1 -0
  300. package/dist/lib/ignore-patterns.js +18 -0
  301. package/dist/lib/ignore-patterns.js.map +1 -0
  302. package/dist/lib/instance-client-factory.d.ts +1 -1
  303. package/dist/lib/instance-client-factory.d.ts.map +1 -1
  304. package/dist/lib/instance-client-factory.js +2 -2
  305. package/dist/lib/instance-client-factory.js.map +1 -1
  306. package/package.json +7 -19
  307. package/dist/commands/build.d.ts.map +0 -1
  308. package/dist/commands/build.js +0 -93
  309. package/dist/commands/build.js.map +0 -1
  310. package/dist/commands/delete/index.d.ts.map +0 -1
  311. package/dist/commands/delete/index.js +0 -48
  312. package/dist/commands/delete/index.js.map +0 -1
  313. package/dist/commands/sync.d.ts.map +0 -1
  314. package/dist/commands/sync.js +0 -85
  315. package/dist/commands/sync.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ "use strict";
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
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const core_1 = require("@oclif/core");
9
+ const base_command_1 = require("../../base-command");
10
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
11
+ class IosCp extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(IosCp);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ const id = this.resolveId(flags.id);
17
+ if ((0, instance_client_factory_1.detectInstanceType)(id) !== 'ios') {
18
+ this.error('ios cp only supports iOS instances');
19
+ }
20
+ const localPath = path_1.default.resolve(args.path);
21
+ if (!fs_1.default.existsSync(localPath)) {
22
+ this.error(`File not found: ${localPath}`);
23
+ }
24
+ const { type, client, disconnect } = await (0, instance_client_factory_1.getInstanceClient)(this.client, id);
25
+ try {
26
+ if (type !== 'ios') {
27
+ this.error('ios cp only supports iOS instances');
28
+ }
29
+ const sandboxPath = await client.cp(args.name, localPath);
30
+ if (flags.json) {
31
+ this.outputJson({ sandboxPath });
32
+ }
33
+ else {
34
+ this.output(sandboxPath);
35
+ }
36
+ }
37
+ finally {
38
+ disconnect();
39
+ }
40
+ });
41
+ }
42
+ }
43
+ IosCp.summary = 'Copy a local file into the iOS sandbox';
44
+ IosCp.description = 'Upload a local file into the simulator sandbox and return the remote path that can be used by follow-up commands such as `ios simctl`.';
45
+ IosCp.examples = [
46
+ '<%= config.bin %> ios cp test.txt ./fixtures/test.txt',
47
+ '<%= config.bin %> ios cp input.json ./payloads/input.json --json',
48
+ ];
49
+ IosCp.args = {
50
+ name: core_1.Args.string({
51
+ description: 'Filename to use inside the simulator sandbox.',
52
+ required: true,
53
+ }),
54
+ path: core_1.Args.string({
55
+ description: 'Local file path to upload into the simulator sandbox.',
56
+ required: true,
57
+ }),
58
+ };
59
+ IosCp.flags = {
60
+ ...base_command_1.BaseCommand.baseFlags,
61
+ id: core_1.Flags.string({
62
+ description: 'iOS instance ID to target. Defaults to the last created iOS instance.',
63
+ }),
64
+ };
65
+ exports.default = IosCp;
66
+ //# sourceMappingURL=cp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp.js","sourceRoot":"","sources":["../../../src/commands/ios/cp.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,sCAA0C;AAC1C,qDAAiD;AACjD,+EAA0F;AAE1F,MAAqB,KAAM,SAAQ,0BAAW;IA2B5C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,IAAA,4CAAkB,EAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,2CAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC;gBACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACnD,CAAC;gBAED,MAAM,WAAW,GAAG,MAAO,MAAc,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACnE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAzDM,aAAO,GAAG,wCAAwC,CAAC;AACnD,iBAAW,GAChB,wIAAwI,CAAC;AACpI,cAAQ,GAAG;IAChB,uDAAuD;IACvD,kEAAkE;CACnE,CAAC;AAEK,UAAI,GAAG;IACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,uDAAuD;QACpE,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;AAEK,WAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,uEAAuE;KACrF,CAAC;CACH,CAAC;kBAzBiB,KAAK"}
@@ -2,7 +2,6 @@ import { BaseCommand } from '../../base-command';
2
2
  export default class IosCreate extends BaseCommand {
3
3
  static summary: string;
4
4
  static description: string;
5
- static aliases: string[];
6
5
  static examples: string[];
7
6
  static flags: {
8
7
  rm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -18,6 +17,7 @@ export default class IosCreate extends BaseCommand {
18
17
  xcode: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
19
18
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
19
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
21
21
  };
22
22
  run(): Promise<void>;
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SAAwD;IAC1E,MAAM,CAAC,OAAO,WAAe;IAE7B,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAmBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4F3B"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SACiK;IAEnL,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;MAqCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsG3B"}
@@ -8,6 +8,9 @@ const core_1 = require("@oclif/core");
8
8
  const base_command_1 = require("../../base-command");
9
9
  const formatting_1 = require("../../lib/formatting");
10
10
  const config_1 = require("../../lib/config");
11
+ function xcodeSandboxIdFromUrl(url) {
12
+ return url.match(/\/(sandbox_[^/]+)(?:\/|$)/)?.[1];
13
+ }
11
14
  class IosCreate extends base_command_1.BaseCommand {
12
15
  async run() {
13
16
  const { flags } = await this.parse(IosCreate);
@@ -19,11 +22,11 @@ class IosCreate extends base_command_1.BaseCommand {
19
22
  for (const filePath of flags.install) {
20
23
  const resolved = path_1.default.resolve(filePath);
21
24
  const name = path_1.default.basename(resolved);
22
- this.log(`Uploading ${name}...`);
25
+ this.info(`Uploading ${name}...`);
23
26
  const asset = await this.client.assets.getOrUpload({ path: resolved, name });
24
27
  assetNames.push(asset.name);
25
28
  }
26
- this.log(`Successfully uploaded ${flags.install.length} file(s)`);
29
+ this.info(`Successfully uploaded ${flags.install.length} file(s)`);
27
30
  }
28
31
  // Build params
29
32
  const params = {
@@ -59,33 +62,44 @@ class IosCreate extends base_command_1.BaseCommand {
59
62
  }
60
63
  const start = Date.now();
61
64
  const instance = await this.client.iosInstances.create(params);
65
+ const consoleUrl = this.consoleStreamUrl(instance.metadata.id);
66
+ const xcodeSandboxUrl = instance.status.sandbox?.xcode?.url;
67
+ const xcodeSandboxId = xcodeSandboxUrl ? xcodeSandboxIdFromUrl(xcodeSandboxUrl) : undefined;
62
68
  (0, config_1.saveLastInstanceId)(instance.metadata.id);
63
- this.log(`Created a new iOS instance in ${((Date.now() - start) / 1000).toFixed(1)}s`);
64
- this.log(`Instance ID: ${instance.metadata.id}`);
65
- this.log(`Console URL: ${this.consoleStreamUrl(instance.metadata.id)}`);
66
- this.log(`Region: ${instance.spec.region}`);
67
- this.log(`State: ${instance.status.state}`);
68
- if (instance.status.sandbox?.xcode?.url) {
69
- this.log(`Xcode Sandbox: ${instance.status.sandbox.xcode.url}`);
69
+ this.info(`Created a new iOS instance in ${((Date.now() - start) / 1000).toFixed(1)}s`);
70
+ this.info('iOS Instance:');
71
+ this.info(` ID: ${instance.metadata.id}`);
72
+ this.info(` Console URL: ${consoleUrl}`);
73
+ this.info(` Region: ${instance.spec.region}`);
74
+ this.info(` State: ${instance.status.state}`);
75
+ if (xcodeSandboxUrl) {
76
+ this.info('Xcode Sandbox:');
77
+ if (xcodeSandboxId) {
78
+ this.info(` ID: ${xcodeSandboxId}`);
79
+ }
80
+ this.info(` URL: ${xcodeSandboxUrl}`);
70
81
  (0, config_1.saveInstanceCache)(instance.metadata.id, {
71
- sandboxXcodeUrl: instance.status.sandbox.xcode.url,
82
+ sandboxXcodeUrl: xcodeSandboxUrl,
72
83
  token: instance.status.token,
73
84
  });
74
85
  }
75
86
  if (flags.json) {
76
87
  this.outputJson(instance);
77
88
  }
89
+ else if (this.isQuietEnabled()) {
90
+ this.output(instance.metadata.id);
91
+ }
78
92
  if (flags.rm) {
79
93
  const cleanup = async () => {
80
94
  try {
81
95
  await this.client.iosInstances.delete(instance.metadata.id);
82
- this.log(`${instance.metadata.id} is deleted`);
96
+ this.info(`${instance.metadata.id} is deleted`);
83
97
  }
84
98
  catch (e) {
85
- this.log(`Failed to delete instance: ${e}`);
99
+ this.info(`Failed to delete instance: ${e}`);
86
100
  }
87
101
  };
88
- this.log('Instance running. Press Ctrl+C to stop and delete.');
102
+ this.info('Instance running. Press Ctrl+C to stop and delete.');
89
103
  await new Promise((resolve) => {
90
104
  const keepAlive = setInterval(() => { }, 1 << 30);
91
105
  const shutdown = () => {
@@ -101,32 +115,49 @@ class IosCreate extends base_command_1.BaseCommand {
101
115
  }
102
116
  }
103
117
  IosCreate.summary = 'Create a new iOS instance';
104
- IosCreate.description = 'Creates a new iOS simulator instance in the cloud.';
105
- IosCreate.aliases = ['run ios'];
118
+ IosCreate.description = 'Create a new cloud iOS simulator instance and wait for it to become ready. You can attach labels, install apps, choose a device model, and optionally enable an Xcode sandbox.';
106
119
  IosCreate.examples = [
107
120
  '<%= config.bin %> ios create',
108
121
  '<%= config.bin %> ios create --rm --model ipad',
109
122
  '<%= config.bin %> ios create --region us-west --install-asset my-app.ipa',
123
+ '<%= config.bin %> ios create --install ./MyApp.ipa --xcode',
110
124
  ];
111
125
  IosCreate.flags = {
112
126
  ...base_command_1.BaseCommand.baseFlags,
113
- rm: core_1.Flags.boolean({ description: 'Delete instance on exit', default: false }),
114
- 'display-name': core_1.Flags.string({ description: 'Display name for the instance' }),
115
- region: core_1.Flags.string({ description: 'Region where the instance will be created' }),
127
+ rm: core_1.Flags.boolean({
128
+ description: 'Delete the instance automatically when this CLI process exits',
129
+ default: false,
130
+ }),
131
+ 'display-name': core_1.Flags.string({
132
+ description: 'Human-friendly display name shown in listings and the console',
133
+ }),
134
+ region: core_1.Flags.string({ description: 'Region where the instance should be created, such as us-west' }),
116
135
  'hard-timeout': core_1.Flags.string({ description: 'Hard timeout (e.g. 1m, 10m, 3h). Default: no timeout' }),
117
136
  'inactivity-timeout': core_1.Flags.string({ description: 'Inactivity timeout (e.g. 1m, 10m, 3h). Default: 3m' }),
118
- label: core_1.Flags.string({ description: 'Labels in key=value format', multiple: true }),
137
+ label: core_1.Flags.string({
138
+ description: 'Metadata label in key=value format. Repeat to attach multiple labels.',
139
+ multiple: true,
140
+ }),
119
141
  model: core_1.Flags.string({
120
- description: 'Device model (iphone, ipad, watch)',
142
+ description: 'Device model to create',
121
143
  options: ['iphone', 'ipad', 'watch'],
122
144
  }),
123
145
  'reuse-if-exists': core_1.Flags.boolean({
124
- description: 'Reuse existing instance with same labels/region',
146
+ description: 'Reuse an existing matching instance instead of creating a new one',
147
+ default: false,
148
+ }),
149
+ 'install-asset': core_1.Flags.string({
150
+ description: 'Existing asset name to install onto the instance after creation',
151
+ multiple: true,
152
+ }),
153
+ install: core_1.Flags.string({
154
+ description: 'Local app file to upload and install automatically after creation. Repeat for multiple files.',
155
+ multiple: true,
156
+ }),
157
+ xcode: core_1.Flags.boolean({
158
+ description: 'Enable an attached Xcode sandbox for build and sync workflows',
125
159
  default: false,
126
160
  }),
127
- 'install-asset': core_1.Flags.string({ description: 'Asset name to install', multiple: true }),
128
- install: core_1.Flags.string({ description: 'Local file to install (auto-uploads if needed)', multiple: true }),
129
- xcode: core_1.Flags.boolean({ description: 'Enable Xcode sandbox on this iOS instance', default: false }),
130
161
  };
131
162
  exports.default = IosCreate;
132
163
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { BaseCommand } from '../../base-command';
2
2
  export default class IosDelete extends BaseCommand {
3
3
  static summary: string;
4
- static aliases: string[];
4
+ static description: string;
5
5
  static examples: string[];
6
6
  static args: {
7
7
  id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
@@ -9,6 +9,7 @@ export default class IosDelete extends BaseCommand {
9
9
  static flags: {
10
10
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
13
  };
13
14
  run(): Promise<void>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA4B;IAC1C,MAAM,CAAC,OAAO,WAAkB;IAChC,MAAM,CAAC,QAAQ,WAAyC;IAExD,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAU3B"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA4B;IAC1C,MAAM,CAAC,WAAW,SAAwF;IAC1G,MAAM,CAAC,QAAQ,WAAoF;IAEnG,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAU3B"}
@@ -15,10 +15,10 @@ class IosDelete extends base_command_1.BaseCommand {
15
15
  }
16
16
  }
17
17
  IosDelete.summary = 'Delete an iOS instance';
18
- IosDelete.aliases = ['delete ios'];
19
- IosDelete.examples = ['<%= config.bin %> ios delete <ID>'];
18
+ IosDelete.description = 'Delete an existing iOS instance by ID and remove any cached local metadata for it.';
19
+ IosDelete.examples = ['<%= config.bin %> ios delete <ID>', '<%= config.bin %> ios delete ios_abc123'];
20
20
  IosDelete.args = {
21
- id: core_1.Args.string({ description: 'Instance ID to delete', required: true }),
21
+ id: core_1.Args.string({ description: 'iOS instance ID to delete', required: true }),
22
22
  };
23
23
  IosDelete.flags = { ...base_command_1.BaseCommand.baseFlags };
24
24
  exports.default = IosDelete;
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,6CAAsD;AAEtD,MAAqB,SAAU,SAAQ,0BAAW;IAWhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAA,2BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;;AAnBM,iBAAO,GAAG,wBAAwB,CAAC;AACnC,iBAAO,GAAG,CAAC,YAAY,CAAC,CAAC;AACzB,kBAAQ,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAEjD,cAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC1E,CAAC;AAEK,eAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBATzB,SAAS"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/ios/delete.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,6CAAsD;AAEtD,MAAqB,SAAU,SAAQ,0BAAW;IAWhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAA,2BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;;AAnBM,iBAAO,GAAG,wBAAwB,CAAC;AACnC,qBAAW,GAAG,oFAAoF,CAAC;AACnG,kBAAQ,GAAG,CAAC,mCAAmC,EAAE,yCAAyC,CAAC,CAAC;AAE5F,cAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC9E,CAAC;AAEK,eAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBATzB,SAAS"}
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosElementTree extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {};
7
+ static flags: {
8
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=element-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-tree.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/element-tree.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAAyD;IACvE,MAAM,CAAC,WAAW,SACwJ;IAC1K,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,KAAK;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
6
+ class IosElementTree extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { flags } = await this.parse(IosElementTree);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ const id = this.resolveId(flags.id);
12
+ if ((0, instance_client_factory_1.detectInstanceType)(id) !== 'ios') {
13
+ this.error('ios element-tree only supports iOS instances');
14
+ }
15
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
16
+ const tree = await (0, instance_client_factory_1.sendSessionCommand)(id, 'element-tree');
17
+ if (flags.json) {
18
+ this.outputJson(tree);
19
+ }
20
+ else {
21
+ this.log(typeof tree === 'string' ? tree : JSON.stringify(tree, null, 2));
22
+ }
23
+ return;
24
+ }
25
+ const { type, client, disconnect } = await (0, instance_client_factory_1.getInstanceClient)(this.client, id);
26
+ try {
27
+ if (type !== 'ios') {
28
+ this.error('ios element-tree only supports iOS instances');
29
+ }
30
+ const tree = await client.elementTree();
31
+ if (flags.json) {
32
+ this.outputJson(tree);
33
+ }
34
+ else {
35
+ this.log(typeof tree === 'string' ? tree : JSON.stringify(tree, null, 2));
36
+ }
37
+ }
38
+ finally {
39
+ disconnect();
40
+ }
41
+ });
42
+ }
43
+ }
44
+ IosElementTree.summary = 'Get the UI element tree from a running iOS instance';
45
+ IosElementTree.description = 'Inspect the current accessibility hierarchy of a running iOS instance. Use `--json` for structured output that agents can search or feed into later automation steps.';
46
+ IosElementTree.examples = [
47
+ '<%= config.bin %> ios element-tree',
48
+ '<%= config.bin %> ios element-tree --id <instance-ID>',
49
+ '<%= config.bin %> ios element-tree --json',
50
+ ];
51
+ IosElementTree.args = {};
52
+ IosElementTree.flags = {
53
+ ...base_command_1.BaseCommand.baseFlags,
54
+ id: core_1.Flags.string({
55
+ description: 'iOS instance ID to inspect. Defaults to the last created iOS instance.',
56
+ }),
57
+ };
58
+ exports.default = IosElementTree;
59
+ //# sourceMappingURL=element-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-tree.js","sourceRoot":"","sources":["../../../src/commands/ios/element-tree.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,+EAK2C;AAE3C,MAAqB,cAAe,SAAQ,0BAAW;IAmBrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,IAAA,4CAAkB,EAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,IAAA,0CAAgB,EAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,IAAA,4CAAkB,EAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBAC1D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,2CAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC;gBACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM,IAAI,GAAG,MAAO,MAAc,CAAC,WAAW,EAAE,CAAC;gBACjD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AArDM,sBAAO,GAAG,qDAAqD,CAAC;AAChE,0BAAW,GAChB,uKAAuK,CAAC;AACnK,uBAAQ,GAAG;IAChB,oCAAoC;IACpC,uDAAuD;IACvD,2CAA2C;CAC5C,CAAC;AAEK,mBAAI,GAAG,EAAE,CAAC;AAEV,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,wEAAwE;KACtF,CAAC;CACH,CAAC;kBAjBiB,cAAc"}
@@ -1,7 +1,7 @@
1
1
  import { BaseCommand } from '../../base-command';
2
2
  export default class IosGet extends BaseCommand {
3
3
  static summary: string;
4
- static aliases: string[];
4
+ static description: string;
5
5
  static examples: string[];
6
6
  static args: {
7
7
  id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
@@ -9,6 +9,7 @@ export default class IosGet extends BaseCommand {
9
9
  static flags: {
10
10
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
13
  };
13
14
  run(): Promise<void>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,OAAO,SAA6C;IAC3D,MAAM,CAAC,OAAO,WAAwB;IACtC,MAAM,CAAC,QAAQ,WAAsC;IAErD,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,OAAO,SAA6C;IAC3D,MAAM,CAAC,WAAW,SAC+H;IACjJ,MAAM,CAAC,QAAQ,WAA+E;IAE9F,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
@@ -23,10 +23,10 @@ class IosGet extends base_command_1.BaseCommand {
23
23
  }
24
24
  }
25
25
  IosGet.summary = 'Get details for a specific iOS instance';
26
- IosGet.aliases = ['get ios', 'get i'];
27
- IosGet.examples = ['<%= config.bin %> ios get <ID>'];
26
+ IosGet.description = 'Fetch detailed metadata for a single iOS instance, including region, state, and display name. Use `--json` to inspect the full API response.';
27
+ IosGet.examples = ['<%= config.bin %> ios get <ID>', '<%= config.bin %> ios get <ID> --json'];
28
28
  IosGet.args = {
29
- id: core_1.Args.string({ description: 'Instance ID to get', required: true }),
29
+ id: core_1.Args.string({ description: 'iOS instance ID to fetch', required: true }),
30
30
  };
31
31
  IosGet.flags = { ...base_command_1.BaseCommand.baseFlags };
32
32
  exports.default = IosGet;
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,MAAO,SAAQ,0BAAW;IAW7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;oBACE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;oBAC7C,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;iBACjC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA9BM,cAAO,GAAG,yCAAyC,CAAC;AACpD,cAAO,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/B,eAAQ,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAE9C,WAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACvE,CAAC;AAEK,YAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBATzB,MAAM"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/ios/get.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,MAAO,SAAQ,0BAAW;IAY7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;oBACE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;oBAC7C,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;iBACjC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA/BM,cAAO,GAAG,yCAAyC,CAAC;AACpD,kBAAW,GAChB,8IAA8I,CAAC;AAC1I,eAAQ,GAAG,CAAC,gCAAgC,EAAE,uCAAuC,CAAC,CAAC;AAEvF,WAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC7E,CAAC;AAEK,YAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAVzB,MAAM"}
@@ -1,14 +1,15 @@
1
1
  import { BaseCommand } from '../../base-command';
2
- export default class Delete extends BaseCommand {
2
+ export default class IosInfo extends BaseCommand {
3
3
  static summary: string;
4
+ static description: string;
4
5
  static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
- };
6
+ static args: {};
8
7
  static flags: {
8
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
9
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
12
  };
12
13
  run(): Promise<void>;
13
14
  }
14
- //# sourceMappingURL=index.d.ts.map
15
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAejD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,OAAO,SAAwD;IACtE,MAAM,CAAC,WAAW,SAC0L;IAC5M,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,KAAK;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwC3B"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
6
+ class IosInfo extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { flags } = await this.parse(IosInfo);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ const id = this.resolveId(flags.id);
12
+ if ((0, instance_client_factory_1.detectInstanceType)(id) !== 'ios') {
13
+ this.error('info is only supported on iOS instances');
14
+ }
15
+ let info;
16
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
17
+ info = (await (0, instance_client_factory_1.sendSessionCommand)(id, 'device-info'));
18
+ }
19
+ else {
20
+ const { type, client, disconnect } = await (0, instance_client_factory_1.getInstanceClient)(this.client, id);
21
+ try {
22
+ if (type !== 'ios') {
23
+ this.error('info is only supported on iOS instances');
24
+ }
25
+ info = client.deviceInfo;
26
+ }
27
+ finally {
28
+ disconnect();
29
+ }
30
+ }
31
+ if (flags.json) {
32
+ this.outputJson(info);
33
+ }
34
+ else {
35
+ this.outputTable(['Field', 'Value'], [
36
+ ['UDID', info.udid],
37
+ ['Model', info.model],
38
+ ['Screen Width', String(info.screenWidth)],
39
+ ['Screen Height', String(info.screenHeight)],
40
+ ]);
41
+ }
42
+ });
43
+ }
44
+ }
45
+ IosInfo.summary = 'Get device information from a running iOS instance';
46
+ IosInfo.description = 'Show basic simulator metadata for a running iOS instance, including UDID, model, and screen dimensions. This is useful when building coordinate-based automation or debugging device-specific behavior.';
47
+ IosInfo.examples = [
48
+ '<%= config.bin %> ios info',
49
+ '<%= config.bin %> ios info --id <instance-ID>',
50
+ '<%= config.bin %> ios info --json',
51
+ ];
52
+ IosInfo.args = {};
53
+ IosInfo.flags = {
54
+ ...base_command_1.BaseCommand.baseFlags,
55
+ id: core_1.Flags.string({
56
+ description: 'iOS instance ID to inspect. Defaults to the last created iOS instance.',
57
+ }),
58
+ };
59
+ exports.default = IosInfo;
60
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/ios/info.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,+EAK2C;AAS3C,MAAqB,OAAQ,SAAQ,0BAAW;IAmB9C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,IAAA,4CAAkB,EAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxD,CAAC;YAED,IAAI,IAAgB,CAAC;YACrB,IAAI,IAAA,0CAAgB,EAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,CAAC,MAAM,IAAA,4CAAkB,EAAC,EAAE,EAAE,aAAa,CAAC,CAAe,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,2CAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC;oBACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;wBACnB,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;oBACxD,CAAC;oBACD,IAAI,GAAI,MAAgD,CAAC,UAAU,CAAC;gBACtE,CAAC;wBAAS,CAAC;oBACT,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;oBACE,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;oBACnB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;oBACrB,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1C,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC7C,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAzDM,eAAO,GAAG,oDAAoD,CAAC;AAC/D,mBAAW,GAChB,yMAAyM,CAAC;AACrM,gBAAQ,GAAG;IAChB,4BAA4B;IAC5B,+CAA+C;IAC/C,mCAAmC;CACpC,CAAC;AAEK,YAAI,GAAG,EAAE,CAAC;AAEV,aAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,wEAAwE;KACtF,CAAC;CACH,CAAC;kBAjBiB,OAAO"}
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosInstallApp extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ path_or_url: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ md5: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'launch-mode': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=install-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-app.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/install-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAA8C;IAC5D,MAAM,CAAC,WAAW,SACuJ;IAEzK,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;MAYV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4D3B"}