lim 0.1.4 → 0.9.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 (333) hide show
  1. package/README.md +836 -0
  2. package/bin/dev.js +16 -0
  3. package/bin/run.js +63 -0
  4. package/dist/base-command.d.ts +51 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +441 -0
  7. package/dist/base-command.js.map +1 -0
  8. package/dist/commands/android/connect.d.ts +17 -0
  9. package/dist/commands/android/connect.d.ts.map +1 -0
  10. package/dist/commands/android/connect.js +50 -0
  11. package/dist/commands/android/connect.js.map +1 -0
  12. package/dist/commands/android/create.d.ts +25 -0
  13. package/dist/commands/android/create.d.ts.map +1 -0
  14. package/dist/commands/android/create.js +202 -0
  15. package/dist/commands/android/create.js.map +1 -0
  16. package/dist/commands/android/delete.d.ts +17 -0
  17. package/dist/commands/android/delete.d.ts.map +1 -0
  18. package/dist/commands/android/delete.js +44 -0
  19. package/dist/commands/android/delete.js.map +1 -0
  20. package/dist/commands/android/element-tree.d.ts +16 -0
  21. package/dist/commands/android/element-tree.d.ts.map +1 -0
  22. package/dist/commands/android/element-tree.js +60 -0
  23. package/dist/commands/android/element-tree.js.map +1 -0
  24. package/dist/commands/android/find-element.d.ts +28 -0
  25. package/dist/commands/android/find-element.d.ts.map +1 -0
  26. package/dist/commands/android/find-element.js +70 -0
  27. package/dist/commands/android/find-element.js.map +1 -0
  28. package/dist/commands/android/get.d.ts +17 -0
  29. package/dist/commands/android/get.d.ts.map +1 -0
  30. package/dist/commands/android/get.js +43 -0
  31. package/dist/commands/android/get.js.map +1 -0
  32. package/dist/commands/android/install-app.d.ts +18 -0
  33. package/dist/commands/android/install-app.d.ts.map +1 -0
  34. package/dist/commands/android/install-app.js +70 -0
  35. package/dist/commands/android/install-app.js.map +1 -0
  36. package/dist/commands/android/list.d.ts +19 -0
  37. package/dist/commands/android/list.d.ts.map +1 -0
  38. package/dist/commands/android/list.js +61 -0
  39. package/dist/commands/android/list.js.map +1 -0
  40. package/dist/commands/android/open-url.d.ts +18 -0
  41. package/dist/commands/android/open-url.d.ts.map +1 -0
  42. package/dist/commands/android/open-url.js +51 -0
  43. package/dist/commands/android/open-url.js.map +1 -0
  44. package/dist/commands/android/press-key.d.ts +19 -0
  45. package/dist/commands/android/press-key.d.ts.map +1 -0
  46. package/dist/commands/android/press-key.js +52 -0
  47. package/dist/commands/android/press-key.js.map +1 -0
  48. package/dist/commands/android/record.d.ts +22 -0
  49. package/dist/commands/android/record.d.ts.map +1 -0
  50. package/dist/commands/android/record.js +100 -0
  51. package/dist/commands/android/record.js.map +1 -0
  52. package/dist/commands/android/screenshot.d.ts +18 -0
  53. package/dist/commands/android/screenshot.d.ts.map +1 -0
  54. package/dist/commands/android/screenshot.js +66 -0
  55. package/dist/commands/android/screenshot.js.map +1 -0
  56. package/dist/commands/android/scroll.d.ts +32 -0
  57. package/dist/commands/android/scroll.d.ts.map +1 -0
  58. package/dist/commands/android/scroll.js +72 -0
  59. package/dist/commands/android/scroll.js.map +1 -0
  60. package/dist/commands/android/tap-element.d.ts +27 -0
  61. package/dist/commands/android/tap-element.d.ts.map +1 -0
  62. package/dist/commands/android/tap-element.js +60 -0
  63. package/dist/commands/android/tap-element.js.map +1 -0
  64. package/dist/commands/android/tap.d.ts +25 -0
  65. package/dist/commands/android/tap.d.ts.map +1 -0
  66. package/dist/commands/android/tap.js +55 -0
  67. package/dist/commands/android/tap.js.map +1 -0
  68. package/dist/commands/android/type.d.ts +31 -0
  69. package/dist/commands/android/type.d.ts.map +1 -0
  70. package/dist/commands/android/type.js +53 -0
  71. package/dist/commands/android/type.js.map +1 -0
  72. package/dist/commands/asset/delete.d.ts +17 -0
  73. package/dist/commands/asset/delete.d.ts.map +1 -0
  74. package/dist/commands/asset/delete.js +23 -0
  75. package/dist/commands/asset/delete.js.map +1 -0
  76. package/dist/commands/asset/list.d.ts +22 -0
  77. package/dist/commands/asset/list.d.ts.map +1 -0
  78. package/dist/commands/asset/list.js +97 -0
  79. package/dist/commands/asset/list.js.map +1 -0
  80. package/dist/commands/asset/pull.d.ts +19 -0
  81. package/dist/commands/asset/pull.d.ts.map +1 -0
  82. package/dist/commands/asset/pull.js +84 -0
  83. package/dist/commands/asset/pull.js.map +1 -0
  84. package/dist/commands/asset/push.d.ts +18 -0
  85. package/dist/commands/asset/push.d.ts.map +1 -0
  86. package/dist/commands/asset/push.js +43 -0
  87. package/dist/commands/asset/push.js.map +1 -0
  88. package/dist/commands/ios/app-log.d.ts +20 -0
  89. package/dist/commands/ios/app-log.d.ts.map +1 -0
  90. package/dist/commands/ios/app-log.js +86 -0
  91. package/dist/commands/ios/app-log.js.map +1 -0
  92. package/dist/commands/ios/cp.d.ts +19 -0
  93. package/dist/commands/ios/cp.d.ts.map +1 -0
  94. package/dist/commands/ios/cp.js +64 -0
  95. package/dist/commands/ios/cp.js.map +1 -0
  96. package/dist/commands/ios/create.d.ts +25 -0
  97. package/dist/commands/ios/create.d.ts.map +1 -0
  98. package/dist/commands/ios/create.js +165 -0
  99. package/dist/commands/ios/create.js.map +1 -0
  100. package/dist/commands/ios/delete.d.ts +17 -0
  101. package/dist/commands/ios/delete.d.ts.map +1 -0
  102. package/dist/commands/ios/delete.js +44 -0
  103. package/dist/commands/ios/delete.js.map +1 -0
  104. package/dist/commands/ios/element-tree.d.ts +16 -0
  105. package/dist/commands/ios/element-tree.d.ts.map +1 -0
  106. package/dist/commands/ios/element-tree.js +57 -0
  107. package/dist/commands/ios/element-tree.js.map +1 -0
  108. package/dist/commands/ios/get.d.ts +17 -0
  109. package/dist/commands/ios/get.d.ts.map +1 -0
  110. package/dist/commands/ios/get.js +44 -0
  111. package/dist/commands/ios/get.js.map +1 -0
  112. package/dist/commands/ios/info.d.ts +16 -0
  113. package/dist/commands/ios/info.d.ts.map +1 -0
  114. package/dist/commands/ios/info.js +55 -0
  115. package/dist/commands/ios/info.js.map +1 -0
  116. package/dist/commands/ios/install-app.d.ts +20 -0
  117. package/dist/commands/ios/install-app.d.ts.map +1 -0
  118. package/dist/commands/ios/install-app.js +97 -0
  119. package/dist/commands/ios/install-app.js.map +1 -0
  120. package/dist/commands/ios/launch-app.d.ts +23 -0
  121. package/dist/commands/ios/launch-app.d.ts.map +1 -0
  122. package/dist/commands/ios/launch-app.js +74 -0
  123. package/dist/commands/ios/launch-app.js.map +1 -0
  124. package/dist/commands/ios/list-apps.d.ts +16 -0
  125. package/dist/commands/ios/list-apps.d.ts.map +1 -0
  126. package/dist/commands/ios/list-apps.js +51 -0
  127. package/dist/commands/ios/list-apps.js.map +1 -0
  128. package/dist/commands/ios/list.d.ts +19 -0
  129. package/dist/commands/ios/list.d.ts.map +1 -0
  130. package/dist/commands/ios/list.js +61 -0
  131. package/dist/commands/ios/list.js.map +1 -0
  132. package/dist/commands/ios/lsof.d.ts +16 -0
  133. package/dist/commands/ios/lsof.d.ts.map +1 -0
  134. package/dist/commands/ios/lsof.js +47 -0
  135. package/dist/commands/ios/lsof.js.map +1 -0
  136. package/dist/commands/ios/open-url.d.ts +18 -0
  137. package/dist/commands/ios/open-url.d.ts.map +1 -0
  138. package/dist/commands/ios/open-url.js +51 -0
  139. package/dist/commands/ios/open-url.js.map +1 -0
  140. package/dist/commands/ios/perform.d.ts +18 -0
  141. package/dist/commands/ios/perform.d.ts.map +1 -0
  142. package/dist/commands/ios/perform.js +228 -0
  143. package/dist/commands/ios/perform.js.map +1 -0
  144. package/dist/commands/ios/press-key.d.ts +19 -0
  145. package/dist/commands/ios/press-key.d.ts.map +1 -0
  146. package/dist/commands/ios/press-key.js +52 -0
  147. package/dist/commands/ios/press-key.js.map +1 -0
  148. package/dist/commands/ios/record.d.ts +22 -0
  149. package/dist/commands/ios/record.d.ts.map +1 -0
  150. package/dist/commands/ios/record.js +101 -0
  151. package/dist/commands/ios/record.js.map +1 -0
  152. package/dist/commands/ios/reverse.d.ts +19 -0
  153. package/dist/commands/ios/reverse.d.ts.map +1 -0
  154. package/dist/commands/ios/reverse.js +97 -0
  155. package/dist/commands/ios/reverse.js.map +1 -0
  156. package/dist/commands/ios/screenshot.d.ts +18 -0
  157. package/dist/commands/ios/screenshot.d.ts.map +1 -0
  158. package/dist/commands/ios/screenshot.js +65 -0
  159. package/dist/commands/ios/screenshot.js.map +1 -0
  160. package/dist/commands/ios/scroll.d.ts +19 -0
  161. package/dist/commands/ios/scroll.d.ts.map +1 -0
  162. package/dist/commands/ios/scroll.js +57 -0
  163. package/dist/commands/ios/scroll.js.map +1 -0
  164. package/dist/commands/ios/simctl.d.ts +17 -0
  165. package/dist/commands/ios/simctl.d.ts.map +1 -0
  166. package/dist/commands/ios/simctl.js +72 -0
  167. package/dist/commands/ios/simctl.js.map +1 -0
  168. package/dist/commands/ios/sync.d.ts +23 -0
  169. package/dist/commands/ios/sync.d.ts.map +1 -0
  170. package/dist/commands/ios/sync.js +90 -0
  171. package/dist/commands/ios/sync.js.map +1 -0
  172. package/dist/commands/ios/syslog.d.ts +16 -0
  173. package/dist/commands/ios/syslog.d.ts.map +1 -0
  174. package/dist/commands/ios/syslog.js +62 -0
  175. package/dist/commands/ios/syslog.js.map +1 -0
  176. package/dist/commands/ios/tap-element.d.ts +23 -0
  177. package/dist/commands/ios/tap-element.d.ts.map +1 -0
  178. package/dist/commands/ios/tap-element.js +92 -0
  179. package/dist/commands/ios/tap-element.js.map +1 -0
  180. package/dist/commands/ios/tap.d.ts +25 -0
  181. package/dist/commands/ios/tap.d.ts.map +1 -0
  182. package/dist/commands/ios/tap.js +55 -0
  183. package/dist/commands/ios/tap.js.map +1 -0
  184. package/dist/commands/ios/terminate-app.d.ts +18 -0
  185. package/dist/commands/ios/terminate-app.d.ts.map +1 -0
  186. package/dist/commands/ios/terminate-app.js +49 -0
  187. package/dist/commands/ios/terminate-app.js.map +1 -0
  188. package/dist/commands/ios/toggle-keyboard.d.ts +15 -0
  189. package/dist/commands/ios/toggle-keyboard.d.ts.map +1 -0
  190. package/dist/commands/ios/toggle-keyboard.js +45 -0
  191. package/dist/commands/ios/toggle-keyboard.js.map +1 -0
  192. package/dist/commands/ios/type.d.ts +19 -0
  193. package/dist/commands/ios/type.d.ts.map +1 -0
  194. package/dist/commands/ios/type.js +53 -0
  195. package/dist/commands/ios/type.js.map +1 -0
  196. package/dist/commands/ios/xcodebuild.d.ts +17 -0
  197. package/dist/commands/ios/xcodebuild.d.ts.map +1 -0
  198. package/dist/commands/ios/xcodebuild.js +59 -0
  199. package/dist/commands/ios/xcodebuild.js.map +1 -0
  200. package/dist/commands/ios/xcrun.d.ts +17 -0
  201. package/dist/commands/ios/xcrun.d.ts.map +1 -0
  202. package/dist/commands/ios/xcrun.js +60 -0
  203. package/dist/commands/ios/xcrun.js.map +1 -0
  204. package/dist/commands/login.d.ts +14 -0
  205. package/dist/commands/login.d.ts.map +1 -0
  206. package/dist/commands/login.js +22 -0
  207. package/dist/commands/login.js.map +1 -0
  208. package/dist/commands/logout.d.ts +14 -0
  209. package/dist/commands/logout.d.ts.map +1 -0
  210. package/dist/commands/logout.js +18 -0
  211. package/dist/commands/logout.js.map +1 -0
  212. package/dist/commands/session/start.d.ts +16 -0
  213. package/dist/commands/session/start.d.ts.map +1 -0
  214. package/dist/commands/session/start.js +129 -0
  215. package/dist/commands/session/start.js.map +1 -0
  216. package/dist/commands/session/status.d.ts +14 -0
  217. package/dist/commands/session/status.d.ts.map +1 -0
  218. package/dist/commands/session/status.js +65 -0
  219. package/dist/commands/session/status.js.map +1 -0
  220. package/dist/commands/session/stop.d.ts +18 -0
  221. package/dist/commands/session/stop.d.ts.map +1 -0
  222. package/dist/commands/session/stop.js +76 -0
  223. package/dist/commands/session/stop.js.map +1 -0
  224. package/dist/commands/skills/install.d.ts +18 -0
  225. package/dist/commands/skills/install.d.ts.map +1 -0
  226. package/dist/commands/skills/install.js +473 -0
  227. package/dist/commands/skills/install.js.map +1 -0
  228. package/dist/commands/xcode/attach-simulator.d.ts +18 -0
  229. package/dist/commands/xcode/attach-simulator.d.ts.map +1 -0
  230. package/dist/commands/xcode/attach-simulator.js +55 -0
  231. package/dist/commands/xcode/attach-simulator.js.map +1 -0
  232. package/dist/commands/xcode/build.d.ts +35 -0
  233. package/dist/commands/xcode/build.d.ts.map +1 -0
  234. package/dist/commands/xcode/build.js +192 -0
  235. package/dist/commands/xcode/build.js.map +1 -0
  236. package/dist/commands/xcode/create.d.ts +22 -0
  237. package/dist/commands/xcode/create.d.ts.map +1 -0
  238. package/dist/commands/xcode/create.js +189 -0
  239. package/dist/commands/xcode/create.js.map +1 -0
  240. package/dist/commands/xcode/delete.d.ts +17 -0
  241. package/dist/commands/xcode/delete.d.ts.map +1 -0
  242. package/dist/commands/xcode/delete.js +44 -0
  243. package/dist/commands/xcode/delete.js.map +1 -0
  244. package/dist/commands/xcode/get.d.ts +17 -0
  245. package/dist/commands/xcode/get.d.ts.map +1 -0
  246. package/dist/commands/xcode/get.js +59 -0
  247. package/dist/commands/xcode/get.js.map +1 -0
  248. package/dist/commands/xcode/list.d.ts +18 -0
  249. package/dist/commands/xcode/list.d.ts.map +1 -0
  250. package/dist/commands/xcode/list.js +58 -0
  251. package/dist/commands/xcode/list.js.map +1 -0
  252. package/dist/commands/xcode/sync.d.ts +24 -0
  253. package/dist/commands/xcode/sync.d.ts.map +1 -0
  254. package/dist/commands/xcode/sync.js +93 -0
  255. package/dist/commands/xcode/sync.js.map +1 -0
  256. package/dist/index.d.ts +2 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +6 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/lib/additional-files.d.ts +6 -0
  261. package/dist/lib/additional-files.d.ts.map +1 -0
  262. package/dist/lib/additional-files.js +19 -0
  263. package/dist/lib/additional-files.js.map +1 -0
  264. package/dist/lib/android-selector.d.ts +50 -0
  265. package/dist/lib/android-selector.d.ts.map +1 -0
  266. package/dist/lib/android-selector.js +103 -0
  267. package/dist/lib/android-selector.js.map +1 -0
  268. package/dist/lib/auth.d.ts +2 -0
  269. package/dist/lib/auth.d.ts.map +1 -0
  270. package/dist/lib/auth.js +60 -0
  271. package/dist/lib/auth.js.map +1 -0
  272. package/dist/lib/config.d.ts +65 -0
  273. package/dist/lib/config.d.ts.map +1 -0
  274. package/dist/lib/config.js +290 -0
  275. package/dist/lib/config.js.map +1 -0
  276. package/dist/lib/daemon-client.d.ts +9 -0
  277. package/dist/lib/daemon-client.d.ts.map +1 -0
  278. package/dist/lib/daemon-client.js +81 -0
  279. package/dist/lib/daemon-client.js.map +1 -0
  280. package/dist/lib/daemon.d.ts +41 -0
  281. package/dist/lib/daemon.d.ts.map +1 -0
  282. package/dist/lib/daemon.js +511 -0
  283. package/dist/lib/daemon.js.map +1 -0
  284. package/dist/lib/detox-version.d.ts +12 -0
  285. package/dist/lib/detox-version.d.ts.map +1 -0
  286. package/dist/lib/detox-version.js +30 -0
  287. package/dist/lib/detox-version.js.map +1 -0
  288. package/dist/lib/duration.d.ts +2 -0
  289. package/dist/lib/duration.d.ts.map +1 -0
  290. package/dist/lib/duration.js +37 -0
  291. package/dist/lib/duration.js.map +1 -0
  292. package/dist/lib/formatting.d.ts +3 -0
  293. package/dist/lib/formatting.d.ts.map +1 -0
  294. package/dist/lib/formatting.js +31 -0
  295. package/dist/lib/formatting.js.map +1 -0
  296. package/dist/lib/ignore-patterns.d.ts +2 -0
  297. package/dist/lib/ignore-patterns.d.ts.map +1 -0
  298. package/dist/lib/ignore-patterns.js +18 -0
  299. package/dist/lib/ignore-patterns.js.map +1 -0
  300. package/dist/lib/instance-client-factory.d.ts +29 -0
  301. package/dist/lib/instance-client-factory.d.ts.map +1 -0
  302. package/dist/lib/instance-client-factory.js +87 -0
  303. package/dist/lib/instance-client-factory.js.map +1 -0
  304. package/dist/lib/launch-app-runtime.d.ts +23 -0
  305. package/dist/lib/launch-app-runtime.d.ts.map +1 -0
  306. package/dist/lib/launch-app-runtime.js +58 -0
  307. package/dist/lib/launch-app-runtime.js.map +1 -0
  308. package/dist/lib/remote-skills.d.ts +47 -0
  309. package/dist/lib/remote-skills.d.ts.map +1 -0
  310. package/dist/lib/remote-skills.js +241 -0
  311. package/dist/lib/remote-skills.js.map +1 -0
  312. package/dist/lib/reverse-port-mapping.d.ts +6 -0
  313. package/dist/lib/reverse-port-mapping.d.ts.map +1 -0
  314. package/dist/lib/reverse-port-mapping.js +24 -0
  315. package/dist/lib/reverse-port-mapping.js.map +1 -0
  316. package/dist/lib/skills.d.ts +17 -0
  317. package/dist/lib/skills.d.ts.map +1 -0
  318. package/dist/lib/skills.js +153 -0
  319. package/dist/lib/skills.js.map +1 -0
  320. package/package.json +69 -13
  321. package/.npmignore +0 -2
  322. package/build/lib/index.js +0 -1498
  323. package/build/lib/index.map +0 -1
  324. package/build/lib/utils/courier.js +0 -98
  325. package/build/lib/utils/courier.map +0 -1
  326. package/build/lib/utils/polyfill.js +0 -146
  327. package/build/lib/utils/polyfill.map +0 -1
  328. package/build.sh +0 -9
  329. package/index.js +0 -2
  330. package/lib/index.js +0 -284
  331. package/lib/utils/courier.js +0 -108
  332. package/lib/utils/polyfill.js +0 -36
  333. package/native.js +0 -2
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const promises_1 = require("node:fs/promises");
4
+ const core_1 = require("@oclif/core");
5
+ const base_command_1 = require("../../base-command");
6
+ const ignore_patterns_1 = require("../../lib/ignore-patterns");
7
+ const duration_1 = require("../../lib/duration");
8
+ const additional_files_1 = require("../../lib/additional-files");
9
+ const DEVICE_SDKS = new Set(['iphoneos', 'watchos']);
10
+ const SIMULATOR_SDKS = new Set(['iphonesimulator', 'watchsimulator']);
11
+ class XcodeBuild extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(XcodeBuild);
14
+ this.setParsedFlags(flags);
15
+ if (flags['dev-server-url'] && flags.configuration === 'Release') {
16
+ this.error('--dev-server-url is only supported for Debug builds.');
17
+ }
18
+ await this.withAuth(async () => {
19
+ const target = await this.resolveXcodeTargetOrCreate(flags.id);
20
+ const id = target.id;
21
+ const syncPath = args.path ?? process.cwd();
22
+ const xcodeClient = await this.resolveXcodeClient(target);
23
+ const settings = {};
24
+ if (flags.scheme)
25
+ settings.scheme = flags.scheme;
26
+ if (flags.workspace)
27
+ settings.workspace = flags.workspace;
28
+ if (flags.project)
29
+ settings.project = flags.project;
30
+ if (flags.sdk)
31
+ settings.sdk = flags.sdk;
32
+ if (flags.configuration)
33
+ settings.configuration = flags.configuration;
34
+ const options = {};
35
+ if (flags['dev-server-url'] || flags['expo-app-dir']) {
36
+ options.reactNative = {
37
+ ...(flags['expo-app-dir'] && { expoAppDir: flags['expo-app-dir'] }),
38
+ ...(flags['dev-server-url'] && { devServerURL: flags['dev-server-url'] }),
39
+ };
40
+ }
41
+ const signing = await this.buildSigningOptions(flags);
42
+ if (signing) {
43
+ if (flags.sdk && SIMULATOR_SDKS.has(flags.sdk)) {
44
+ this.error('Signing is only supported for device SDK builds. Use --sdk iphoneos or --sdk watchos.');
45
+ }
46
+ if (!flags.sdk) {
47
+ settings.sdk = 'iphoneos';
48
+ }
49
+ else if (!DEVICE_SDKS.has(flags.sdk)) {
50
+ this.error('Signing is only supported for device SDK builds. Use --sdk iphoneos or --sdk watchos.');
51
+ }
52
+ options.signing = signing;
53
+ }
54
+ if (flags.upload && flags['signed-upload-url']) {
55
+ this.error('Use either --upload or --signed-upload-url, not both.');
56
+ }
57
+ if (flags.upload) {
58
+ options.upload = { assetName: flags.upload };
59
+ }
60
+ else if (flags['signed-upload-url']) {
61
+ options.upload = {
62
+ signedUploadUrl: flags['signed-upload-url'],
63
+ };
64
+ }
65
+ this.info(`Syncing ${syncPath} to instance ${id}...`);
66
+ const syncStart = Date.now();
67
+ const syncOptions = {
68
+ watch: false,
69
+ install: false,
70
+ basisCacheDir: flags['basis-cache-dir'],
71
+ maxPatchBytes: flags['max-patch-bytes'],
72
+ ignore: (0, ignore_patterns_1.compileIgnorePatterns)(flags.ignore),
73
+ additionalFiles: (0, additional_files_1.parseAdditionalFileFlags)(flags['additional-file']),
74
+ };
75
+ await xcodeClient.sync(syncPath, syncOptions);
76
+ const syncDuration = (0, duration_1.formatDurationMs)(Date.now() - syncStart);
77
+ this.info(`Sync complete in ${syncDuration}.`);
78
+ this.info('Starting xcodebuild...');
79
+ const proc = xcodeClient.xcodebuild(Object.keys(settings).length > 0 ? settings : undefined, Object.keys(options).length > 0 ? options : undefined);
80
+ proc.stdout.on('data', (line) => {
81
+ process.stdout.write(line + '\n');
82
+ });
83
+ proc.stderr.on('data', (line) => {
84
+ process.stderr.write(line + '\n');
85
+ });
86
+ const result = await proc;
87
+ if (result.exitCode !== 0) {
88
+ this.error(`xcodebuild failed with exit code ${result.exitCode}`, { exit: result.exitCode });
89
+ }
90
+ this.output(`\nBuild succeeded (exit code ${result.exitCode})`);
91
+ if (flags.upload && result.signedDownloadUrl) {
92
+ this.output(`Artifact download URL: ${result.signedDownloadUrl}`);
93
+ }
94
+ });
95
+ }
96
+ async buildSigningOptions(flags) {
97
+ const hasCertificate = flags['certificate-p12'] !== undefined;
98
+ const hasPassword = flags['certificate-password'] !== undefined;
99
+ const hasProfile = flags['provisioning-profile'] !== undefined;
100
+ const hasAnySigningFlag = hasCertificate || hasPassword || hasProfile;
101
+ if (!hasAnySigningFlag) {
102
+ return undefined;
103
+ }
104
+ if (!hasCertificate || !hasPassword || !hasProfile) {
105
+ this.error('Signed device builds require --certificate-p12, --certificate-password, and --provisioning-profile.');
106
+ }
107
+ return {
108
+ certificateP12Base64: (await (0, promises_1.readFile)(flags['certificate-p12'])).toString('base64'),
109
+ certificatePassword: flags['certificate-password'],
110
+ provisioningProfileBase64: (await (0, promises_1.readFile)(flags['provisioning-profile'])).toString('base64'),
111
+ };
112
+ }
113
+ }
114
+ XcodeBuild.summary = 'Run xcodebuild on an Xcode sandbox';
115
+ XcodeBuild.description = 'Sync a local project path once (or the current working directory if omitted), then trigger a remote xcodebuild with streaming output. This works with standalone Xcode instances and can also target an iOS instance with `--xcode` enabled or created via `xcode create --ios` when you pass `--id`.';
116
+ XcodeBuild.examples = [
117
+ '<%= config.bin %> xcode build',
118
+ '<%= config.bin %> xcode build ./MyProject',
119
+ '<%= config.bin %> xcode build --id <xcode-instance-ID>',
120
+ '<%= config.bin %> xcode build ./MyProject --id <xcode-instance-ID>',
121
+ '<%= config.bin %> xcode build --scheme MyApp --workspace MyApp.xcworkspace',
122
+ '<%= config.bin %> xcode build --configuration Debug',
123
+ '<%= config.bin %> xcode build ./ExpoApp --configuration Debug --dev-server-url https://abc123.exp.direct',
124
+ '<%= config.bin %> xcode build ./repo --expo-app-dir apps/mobile --configuration Debug --dev-server-url "myapp://expo-development-client/?url=http%3A%2F%2F10.244.7.112%3A57090"',
125
+ '<%= config.bin %> xcode build --scheme WatchApp --sdk watchsimulator',
126
+ '<%= config.bin %> xcode build ./MyProject --scheme MyApp --certificate-p12 ./certificate.p12 --certificate-password "$P12_PASSWORD" --provisioning-profile ./profile.mobileprovision --upload signed-device-build.ipa',
127
+ '<%= config.bin %> xcode build --id <ios-instance-ID> --project MyApp.xcodeproj --upload ios-build.zip',
128
+ '<%= config.bin %> xcode build --signed-upload-url <url>',
129
+ '<%= config.bin %> xcode build ./MyProject --basis-cache-dir ./.limsync-cache --max-patch-bytes 2097152',
130
+ '<%= config.bin %> xcode build ./MyProject --ignore "\\\\.xcuserdata/"',
131
+ '<%= config.bin %> xcode build ./MyProject --additional-file ~/.netrc=~/.netrc',
132
+ ];
133
+ XcodeBuild.args = {
134
+ path: core_1.Args.string({
135
+ description: 'Local project path to sync before building. Defaults to the current working directory.',
136
+ required: false,
137
+ }),
138
+ };
139
+ XcodeBuild.flags = {
140
+ ...base_command_1.BaseCommand.baseFlags,
141
+ id: core_1.Flags.string({
142
+ description: 'Xcode instance ID to build on, or an iOS instance ID with `--xcode` enabled. Defaults to the most recently created Xcode-capable target.',
143
+ }),
144
+ scheme: core_1.Flags.string({ description: 'Xcode scheme to build, such as MyApp' }),
145
+ workspace: core_1.Flags.string({
146
+ description: 'Workspace file to pass to xcodebuild, such as MyApp.xcworkspace',
147
+ }),
148
+ project: core_1.Flags.string({ description: 'Project file to pass to xcodebuild, such as MyApp.xcodeproj' }),
149
+ sdk: core_1.Flags.string({
150
+ description: 'SDK family to build for.',
151
+ options: ['iphonesimulator', 'iphoneos', 'watchsimulator', 'watchos'],
152
+ }),
153
+ configuration: core_1.Flags.string({
154
+ description: 'Xcode build configuration.',
155
+ options: ['Debug', 'Release'],
156
+ }),
157
+ 'dev-server-url': core_1.Flags.string({
158
+ description: 'Launch URL for Debug React Native / Expo builds. If the build is installed on an attached iOS simulator, the app opens this URL unchanged after build; otherwise this option has no launch effect. For Expo dev-client builds, pass the exact dev-client URL or development server URL you want opened.',
159
+ }),
160
+ 'expo-app-dir': core_1.Flags.string({
161
+ description: 'Relative path from the synced workspace root to the Expo app directory. Use for monorepos or ambiguous React Native workspaces.',
162
+ }),
163
+ upload: core_1.Flags.string({ description: 'Upload the resulting build artifact as an asset with this name' }),
164
+ 'signed-upload-url': core_1.Flags.string({
165
+ description: 'Presigned URL to upload the resulting build artifact to.',
166
+ }),
167
+ 'certificate-p12': core_1.Flags.string({
168
+ description: 'Path to a PKCS#12 (.p12) signing certificate. Requires --certificate-password and --provisioning-profile.',
169
+ }),
170
+ 'certificate-password': core_1.Flags.string({
171
+ description: 'Password for the PKCS#12 signing certificate.',
172
+ }),
173
+ 'provisioning-profile': core_1.Flags.string({
174
+ description: 'Path to a .mobileprovision profile. Requires --certificate-p12 and --certificate-password.',
175
+ }),
176
+ 'basis-cache-dir': core_1.Flags.string({
177
+ description: 'Directory to use for the client-side delta sync cache during the pre-build sync step.',
178
+ }),
179
+ 'max-patch-bytes': core_1.Flags.integer({
180
+ description: 'Maximum patch size in bytes before falling back to a full upload during sync.',
181
+ }),
182
+ ignore: core_1.Flags.string({
183
+ description: 'Regular expression to ignore matching relative paths during the pre-build sync. Repeat for multiple patterns.',
184
+ multiple: true,
185
+ }),
186
+ 'additional-file': core_1.Flags.string({
187
+ description: 'Additional file to sync before building as localPath=remotePath, for example ~/.netrc=~/.netrc. Repeat for multiple files.',
188
+ multiple: true,
189
+ }),
190
+ };
191
+ exports.default = XcodeBuild;
192
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/xcode/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class XcodeCreate extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static flags: {
7
+ rm: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ 'display-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ region: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'hard-timeout': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'inactivity-timeout': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ label: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'reuse-if-exists': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ ios: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
19
+ };
20
+ run(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,OAAO,SAAiC;IAC/C,MAAM,CAAC,WAAW,SACoK;IAEtL,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MA2BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiJ3B"}
@@ -0,0 +1,189 @@
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 formatting_1 = require("../../lib/formatting");
6
+ const config_1 = require("../../lib/config");
7
+ function xcodeSandboxIdFromUrl(url) {
8
+ return url.match(/\/(sandbox_[^/]+)(?:\/|$)/)?.[1];
9
+ }
10
+ class XcodeCreate extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { flags } = await this.parse(XcodeCreate);
13
+ this.setParsedFlags(flags);
14
+ await this.withAuth(async () => {
15
+ const labels = (0, formatting_1.parseLabels)(flags.label);
16
+ if (flags.ios) {
17
+ const params = {
18
+ wait: true,
19
+ reuseIfExists: flags['reuse-if-exists'] || undefined,
20
+ spec: {
21
+ sandbox: { xcode: { enabled: true } },
22
+ },
23
+ };
24
+ if (flags.region)
25
+ params.spec.region = flags.region;
26
+ if (flags['hard-timeout'])
27
+ params.spec.hardTimeout = flags['hard-timeout'];
28
+ if (flags['inactivity-timeout'])
29
+ params.spec.inactivityTimeout = flags['inactivity-timeout'];
30
+ if (flags['display-name'] || labels) {
31
+ params.metadata = {};
32
+ if (flags['display-name'])
33
+ params.metadata.displayName = flags['display-name'];
34
+ if (labels)
35
+ params.metadata.labels = labels;
36
+ }
37
+ const start = Date.now();
38
+ const instance = await this.client.iosInstances.create(params);
39
+ const consoleUrl = this.consoleStreamUrl(instance.metadata.id);
40
+ const signedStreamUrl = this.signedStreamUrl(instance.status);
41
+ const xcodeSandboxUrl = instance.status.sandbox?.xcode?.url;
42
+ const xcodeSandboxId = xcodeSandboxUrl ? xcodeSandboxIdFromUrl(xcodeSandboxUrl) : undefined;
43
+ (0, config_1.registerCreatedInstance)(instance, ['xcode']);
44
+ this.info(`Created a new iOS instance with Xcode sandbox in ${((Date.now() - start) / 1000).toFixed(1)}s`);
45
+ this.info('iOS Instance:');
46
+ this.info(` ID: ${instance.metadata.id}`);
47
+ this.info(` Console URL: ${consoleUrl}`);
48
+ if (signedStreamUrl) {
49
+ this.info(` Signed Stream URL: ${signedStreamUrl}`);
50
+ }
51
+ this.info(` Region: ${instance.spec.region}`);
52
+ this.info(` State: ${instance.status.state}`);
53
+ if (xcodeSandboxUrl) {
54
+ this.info('Xcode Sandbox:');
55
+ if (xcodeSandboxId) {
56
+ this.info(` ID: ${xcodeSandboxId}`);
57
+ }
58
+ this.info(` URL: ${xcodeSandboxUrl}`);
59
+ }
60
+ if (flags.json) {
61
+ this.outputJson(instance);
62
+ }
63
+ else if (this.isQuietEnabled()) {
64
+ this.output(instance.metadata.id);
65
+ }
66
+ if (flags.rm) {
67
+ const cleanup = async () => {
68
+ try {
69
+ await this.client.iosInstances.delete(instance.metadata.id);
70
+ this.info(`${instance.metadata.id} is deleted`);
71
+ }
72
+ catch (e) {
73
+ this.info(`Failed to delete instance: ${e}`);
74
+ }
75
+ };
76
+ this.info('Instance running. Press Ctrl+C to stop and delete.');
77
+ await new Promise((resolve) => {
78
+ const keepAlive = setInterval(() => { }, 1 << 30);
79
+ const shutdown = () => {
80
+ clearInterval(keepAlive);
81
+ resolve();
82
+ };
83
+ process.on('SIGINT', shutdown);
84
+ process.on('SIGTERM', shutdown);
85
+ });
86
+ await cleanup();
87
+ }
88
+ return;
89
+ }
90
+ const params = {
91
+ wait: true,
92
+ reuseIfExists: flags['reuse-if-exists'] || undefined,
93
+ spec: {},
94
+ };
95
+ if (flags.region)
96
+ params.spec.region = flags.region;
97
+ if (flags['hard-timeout'])
98
+ params.spec.hardTimeout = flags['hard-timeout'];
99
+ if (flags['inactivity-timeout'])
100
+ params.spec.inactivityTimeout = flags['inactivity-timeout'];
101
+ if (flags['display-name'] || labels) {
102
+ params.metadata = {};
103
+ if (flags['display-name'])
104
+ params.metadata.displayName = flags['display-name'];
105
+ if (labels)
106
+ params.metadata.labels = labels;
107
+ }
108
+ const start = Date.now();
109
+ const instance = await this.client.xcodeInstances.create(params);
110
+ const consoleUrl = this.consoleStreamUrl(instance.metadata.id);
111
+ const signedStreamUrl = this.signedStreamUrl(instance.status);
112
+ (0, config_1.registerCreatedInstance)(instance);
113
+ this.info(`Created a new Xcode instance in ${((Date.now() - start) / 1000).toFixed(1)}s`);
114
+ this.info('Xcode Instance:');
115
+ this.info(` ID: ${instance.metadata.id}`);
116
+ this.info(` Console URL: ${consoleUrl}`);
117
+ if (signedStreamUrl) {
118
+ this.info(` Signed Stream URL: ${signedStreamUrl}`);
119
+ }
120
+ this.info(` Region: ${instance.spec.region}`);
121
+ this.info(` State: ${instance.status.state}`);
122
+ if (flags.json) {
123
+ this.outputJson(instance);
124
+ }
125
+ else if (this.isQuietEnabled()) {
126
+ this.output(instance.metadata.id);
127
+ }
128
+ if (flags.rm) {
129
+ const cleanup = async () => {
130
+ try {
131
+ await this.client.xcodeInstances.delete(instance.metadata.id);
132
+ this.info(`${instance.metadata.id} is deleted`);
133
+ }
134
+ catch (e) {
135
+ this.info(`Failed to delete instance: ${e}`);
136
+ }
137
+ };
138
+ this.info('Instance running. Press Ctrl+C to stop and delete.');
139
+ await new Promise((resolve) => {
140
+ const keepAlive = setInterval(() => { }, 1 << 30);
141
+ const shutdown = () => {
142
+ clearInterval(keepAlive);
143
+ resolve();
144
+ };
145
+ process.on('SIGINT', shutdown);
146
+ process.on('SIGTERM', shutdown);
147
+ });
148
+ await cleanup();
149
+ }
150
+ });
151
+ }
152
+ }
153
+ XcodeCreate.summary = 'Create a new Xcode instance';
154
+ XcodeCreate.description = 'Create a new cloud Xcode sandbox for remote sync and build workflows. Use `--ios` to create an iOS instance with an attached Xcode sandbox instead of a standalone Xcode sandbox.';
155
+ XcodeCreate.examples = [
156
+ '<%= config.bin %> xcode create',
157
+ '<%= config.bin %> xcode create --ios',
158
+ '<%= config.bin %> xcode create --rm --region us-west',
159
+ '<%= config.bin %> xcode create --label env=dev --display-name ci-builder',
160
+ ];
161
+ XcodeCreate.flags = {
162
+ ...base_command_1.BaseCommand.baseFlags,
163
+ rm: core_1.Flags.boolean({
164
+ description: 'Delete the instance automatically when this CLI process exits',
165
+ default: false,
166
+ }),
167
+ 'display-name': core_1.Flags.string({
168
+ description: 'Human-friendly display name shown in listings and the console',
169
+ }),
170
+ region: core_1.Flags.string({ description: 'Region where the sandbox should be created, such as us-west' }),
171
+ 'hard-timeout': core_1.Flags.string({ description: 'Hard timeout (e.g. 1m, 10m, 3h). Default: no timeout' }),
172
+ 'inactivity-timeout': core_1.Flags.string({
173
+ description: 'Inactivity timeout (e.g. 1m, 10m, 3h). Default is in organization settings.',
174
+ }),
175
+ label: core_1.Flags.string({
176
+ description: 'Metadata label in key=value format. Repeat to attach multiple labels.',
177
+ multiple: true,
178
+ }),
179
+ 'reuse-if-exists': core_1.Flags.boolean({
180
+ description: 'Reuse an existing matching instance instead of creating a new one',
181
+ default: false,
182
+ }),
183
+ ios: core_1.Flags.boolean({
184
+ description: 'Create an iOS instance with an attached Xcode sandbox instead of a standalone Xcode sandbox',
185
+ default: false,
186
+ }),
187
+ };
188
+ exports.default = XcodeCreate;
189
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/xcode/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class XcodeDelete extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/delete.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,OAAO,SAA8B;IAC5C,MAAM,CAAC,WAAW,SAAsD;IACxE,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB3B"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api_1 = require("@limrun/api");
4
+ const core_1 = require("@oclif/core");
5
+ const base_command_1 = require("../../base-command");
6
+ const config_1 = require("../../lib/config");
7
+ const daemon_1 = require("../../lib/daemon");
8
+ class XcodeDelete extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const { args, flags } = await this.parse(XcodeDelete);
11
+ this.setParsedFlags(flags);
12
+ await this.withAuth(async () => {
13
+ const resolvedInstance = await this.resolveXcodeTarget(args.id);
14
+ const id = resolvedInstance.id;
15
+ try {
16
+ await this.client.xcodeInstances.delete(id);
17
+ }
18
+ catch (err) {
19
+ if (!(err instanceof api_1.NotFoundError)) {
20
+ throw err;
21
+ }
22
+ }
23
+ (0, daemon_1.stopDaemon)(id);
24
+ (0, config_1.clearLastInstanceId)(id);
25
+ this.log(`Deleted Xcode instance: ${id}`);
26
+ });
27
+ }
28
+ }
29
+ XcodeDelete.summary = 'Delete an Xcode instance';
30
+ XcodeDelete.description = 'Delete an existing Xcode sandbox instance by ID.';
31
+ XcodeDelete.examples = [
32
+ '<%= config.bin %> xcode delete',
33
+ '<%= config.bin %> xcode delete <ID>',
34
+ '<%= config.bin %> xcode delete xcode_abc123',
35
+ ];
36
+ XcodeDelete.args = {
37
+ id: core_1.Args.string({
38
+ description: 'Xcode instance ID to delete. Defaults to the last created Xcode instance.',
39
+ required: false,
40
+ }),
41
+ };
42
+ XcodeDelete.flags = { ...base_command_1.BaseCommand.baseFlags };
43
+ exports.default = XcodeDelete;
44
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/xcode/delete.ts"],"names":[],"mappings":";;AAAA,qCAA4C;AAC5C,sCAAmC;AACnC,qDAAiD;AACjD,6CAAuD;AACvD,6CAA8C;AAE9C,MAAqB,WAAY,SAAQ,0BAAW;IAkBlD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,CAAC,GAAG,YAAY,mBAAa,CAAC,EAAE,CAAC;oBACpC,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,IAAA,mBAAU,EAAC,EAAE,CAAC,CAAC;YACf,IAAA,4BAAmB,EAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;;AApCM,mBAAO,GAAG,0BAA0B,CAAC;AACrC,uBAAW,GAAG,kDAAkD,CAAC;AACjE,oBAAQ,GAAG;IAChB,gCAAgC;IAChC,qCAAqC;IACrC,6CAA6C;CAC9C,CAAC;AAEK,gBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,2EAA2E;QACxF,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,iBAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAhBzB,WAAW"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class XcodeGet extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,OAAO,SAA+C;IAC7D,MAAM,CAAC,WAAW,SACyI;IAC3J,MAAM,CAAC,QAAQ,WAA8E;IAE7F,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuC3B"}
@@ -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
+ class XcodeGet extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { args, flags } = await this.parse(XcodeGet);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ const target = await this.resolveXcodeTarget(args.id);
11
+ if (target.type === 'ios') {
12
+ const instance = await this.client.iosInstances.get(target.id);
13
+ if (flags.json) {
14
+ this.outputJson(instance);
15
+ }
16
+ else {
17
+ const signedStreamUrl = this.signedStreamUrl(instance.status);
18
+ this.output(`ID: ${instance.metadata.id}`);
19
+ this.output(`Type: iOS with Xcode sandbox`);
20
+ this.output(`Name: ${instance.metadata.displayName || ''}`);
21
+ this.output(`Region: ${instance.spec.region}`);
22
+ this.output(`State: ${instance.status.state}`);
23
+ this.output(`Console URL: ${this.consoleStreamUrl(instance.metadata.id)}`);
24
+ if (instance.status.sandbox?.xcode?.url) {
25
+ this.output(`Xcode Sandbox URL: ${instance.status.sandbox.xcode.url}`);
26
+ }
27
+ if (signedStreamUrl)
28
+ this.output(`Signed Stream URL: ${signedStreamUrl}`);
29
+ }
30
+ return;
31
+ }
32
+ if (flags.json) {
33
+ this.outputJson(target);
34
+ }
35
+ else {
36
+ this.output(`ID: ${target.id}`);
37
+ this.output(`Type: Xcode sandbox`);
38
+ this.output(`Name: ${target.metadata?.displayName || ''}`);
39
+ this.output(`Region: ${target.spec?.region || ''}`);
40
+ this.output(`State: ${target.status?.state || ''}`);
41
+ this.output(`Console URL: ${this.consoleStreamUrl(target.id)}`);
42
+ if (target.apiUrl)
43
+ this.output(`API URL: ${target.apiUrl}`);
44
+ }
45
+ });
46
+ }
47
+ }
48
+ XcodeGet.summary = 'Get details for a specific Xcode instance';
49
+ XcodeGet.description = 'Fetch detailed metadata for a single Xcode sandbox instance, including region, state, and display name. Use `--json` to inspect the full API response.';
50
+ XcodeGet.examples = ['<%= config.bin %> xcode get', '<%= config.bin %> xcode get <ID> --json'];
51
+ XcodeGet.args = {
52
+ id: core_1.Args.string({
53
+ description: 'Xcode instance ID to fetch. Defaults to the last created Xcode target.',
54
+ required: false,
55
+ }),
56
+ };
57
+ XcodeGet.flags = { ...base_command_1.BaseCommand.baseFlags };
58
+ exports.default = XcodeGet;
59
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/xcode/get.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,QAAS,SAAQ,0BAAW;IAe/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC3E,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;wBACxC,IAAI,CAAC,MAAM,CAAC,sBAAsB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBACzE,CAAC;oBACD,IAAI,eAAe;wBAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,MAAM,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,MAAM,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AApDM,gBAAO,GAAG,2CAA2C,CAAC;AACtD,oBAAW,GAChB,wJAAwJ,CAAC;AACpJ,iBAAQ,GAAG,CAAC,6BAA6B,EAAE,yCAAyC,CAAC,CAAC;AAEtF,aAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,wEAAwE;QACrF,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,cAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAbzB,QAAQ"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class XcodeList extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {};
7
+ static flags: {
8
+ state: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'label-selector': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ all: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,WAAW,SACuI;IACzJ,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,KAAK;;;;;;;;MAYV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3B"}