lim 0.1.5 → 0.10.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 (349) hide show
  1. package/README.md +861 -0
  2. package/bin/dev.js +16 -0
  3. package/bin/run.js +63 -0
  4. package/dist/base-command.d.ts +55 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +467 -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/go.d.ts +17 -0
  89. package/dist/commands/go.d.ts.map +1 -0
  90. package/dist/commands/go.js +201 -0
  91. package/dist/commands/go.js.map +1 -0
  92. package/dist/commands/ios/app-log.d.ts +20 -0
  93. package/dist/commands/ios/app-log.d.ts.map +1 -0
  94. package/dist/commands/ios/app-log.js +86 -0
  95. package/dist/commands/ios/app-log.js.map +1 -0
  96. package/dist/commands/ios/cp.d.ts +19 -0
  97. package/dist/commands/ios/cp.d.ts.map +1 -0
  98. package/dist/commands/ios/cp.js +64 -0
  99. package/dist/commands/ios/cp.js.map +1 -0
  100. package/dist/commands/ios/create.d.ts +25 -0
  101. package/dist/commands/ios/create.d.ts.map +1 -0
  102. package/dist/commands/ios/create.js +163 -0
  103. package/dist/commands/ios/create.js.map +1 -0
  104. package/dist/commands/ios/delete.d.ts +17 -0
  105. package/dist/commands/ios/delete.d.ts.map +1 -0
  106. package/dist/commands/ios/delete.js +44 -0
  107. package/dist/commands/ios/delete.js.map +1 -0
  108. package/dist/commands/ios/element-tree.d.ts +16 -0
  109. package/dist/commands/ios/element-tree.d.ts.map +1 -0
  110. package/dist/commands/ios/element-tree.js +57 -0
  111. package/dist/commands/ios/element-tree.js.map +1 -0
  112. package/dist/commands/ios/get.d.ts +17 -0
  113. package/dist/commands/ios/get.d.ts.map +1 -0
  114. package/dist/commands/ios/get.js +44 -0
  115. package/dist/commands/ios/get.js.map +1 -0
  116. package/dist/commands/ios/info.d.ts +16 -0
  117. package/dist/commands/ios/info.d.ts.map +1 -0
  118. package/dist/commands/ios/info.js +55 -0
  119. package/dist/commands/ios/info.js.map +1 -0
  120. package/dist/commands/ios/install-app.d.ts +20 -0
  121. package/dist/commands/ios/install-app.d.ts.map +1 -0
  122. package/dist/commands/ios/install-app.js +97 -0
  123. package/dist/commands/ios/install-app.js.map +1 -0
  124. package/dist/commands/ios/launch-app.d.ts +23 -0
  125. package/dist/commands/ios/launch-app.d.ts.map +1 -0
  126. package/dist/commands/ios/launch-app.js +74 -0
  127. package/dist/commands/ios/launch-app.js.map +1 -0
  128. package/dist/commands/ios/list-apps.d.ts +16 -0
  129. package/dist/commands/ios/list-apps.d.ts.map +1 -0
  130. package/dist/commands/ios/list-apps.js +51 -0
  131. package/dist/commands/ios/list-apps.js.map +1 -0
  132. package/dist/commands/ios/list.d.ts +19 -0
  133. package/dist/commands/ios/list.d.ts.map +1 -0
  134. package/dist/commands/ios/list.js +61 -0
  135. package/dist/commands/ios/list.js.map +1 -0
  136. package/dist/commands/ios/lsof.d.ts +16 -0
  137. package/dist/commands/ios/lsof.d.ts.map +1 -0
  138. package/dist/commands/ios/lsof.js +47 -0
  139. package/dist/commands/ios/lsof.js.map +1 -0
  140. package/dist/commands/ios/open-url.d.ts +18 -0
  141. package/dist/commands/ios/open-url.d.ts.map +1 -0
  142. package/dist/commands/ios/open-url.js +51 -0
  143. package/dist/commands/ios/open-url.js.map +1 -0
  144. package/dist/commands/ios/perform.d.ts +18 -0
  145. package/dist/commands/ios/perform.d.ts.map +1 -0
  146. package/dist/commands/ios/perform.js +228 -0
  147. package/dist/commands/ios/perform.js.map +1 -0
  148. package/dist/commands/ios/press-key.d.ts +19 -0
  149. package/dist/commands/ios/press-key.d.ts.map +1 -0
  150. package/dist/commands/ios/press-key.js +52 -0
  151. package/dist/commands/ios/press-key.js.map +1 -0
  152. package/dist/commands/ios/record.d.ts +22 -0
  153. package/dist/commands/ios/record.d.ts.map +1 -0
  154. package/dist/commands/ios/record.js +101 -0
  155. package/dist/commands/ios/record.js.map +1 -0
  156. package/dist/commands/ios/reverse.d.ts +19 -0
  157. package/dist/commands/ios/reverse.d.ts.map +1 -0
  158. package/dist/commands/ios/reverse.js +97 -0
  159. package/dist/commands/ios/reverse.js.map +1 -0
  160. package/dist/commands/ios/screenshot.d.ts +18 -0
  161. package/dist/commands/ios/screenshot.d.ts.map +1 -0
  162. package/dist/commands/ios/screenshot.js +65 -0
  163. package/dist/commands/ios/screenshot.js.map +1 -0
  164. package/dist/commands/ios/scroll.d.ts +19 -0
  165. package/dist/commands/ios/scroll.d.ts.map +1 -0
  166. package/dist/commands/ios/scroll.js +57 -0
  167. package/dist/commands/ios/scroll.js.map +1 -0
  168. package/dist/commands/ios/simctl.d.ts +17 -0
  169. package/dist/commands/ios/simctl.d.ts.map +1 -0
  170. package/dist/commands/ios/simctl.js +72 -0
  171. package/dist/commands/ios/simctl.js.map +1 -0
  172. package/dist/commands/ios/sync.d.ts +23 -0
  173. package/dist/commands/ios/sync.d.ts.map +1 -0
  174. package/dist/commands/ios/sync.js +90 -0
  175. package/dist/commands/ios/sync.js.map +1 -0
  176. package/dist/commands/ios/syslog.d.ts +16 -0
  177. package/dist/commands/ios/syslog.d.ts.map +1 -0
  178. package/dist/commands/ios/syslog.js +62 -0
  179. package/dist/commands/ios/syslog.js.map +1 -0
  180. package/dist/commands/ios/tap-element.d.ts +23 -0
  181. package/dist/commands/ios/tap-element.d.ts.map +1 -0
  182. package/dist/commands/ios/tap-element.js +92 -0
  183. package/dist/commands/ios/tap-element.js.map +1 -0
  184. package/dist/commands/ios/tap.d.ts +25 -0
  185. package/dist/commands/ios/tap.d.ts.map +1 -0
  186. package/dist/commands/ios/tap.js +55 -0
  187. package/dist/commands/ios/tap.js.map +1 -0
  188. package/dist/commands/ios/terminate-app.d.ts +18 -0
  189. package/dist/commands/ios/terminate-app.d.ts.map +1 -0
  190. package/dist/commands/ios/terminate-app.js +49 -0
  191. package/dist/commands/ios/terminate-app.js.map +1 -0
  192. package/dist/commands/ios/toggle-keyboard.d.ts +15 -0
  193. package/dist/commands/ios/toggle-keyboard.d.ts.map +1 -0
  194. package/dist/commands/ios/toggle-keyboard.js +45 -0
  195. package/dist/commands/ios/toggle-keyboard.js.map +1 -0
  196. package/dist/commands/ios/type.d.ts +19 -0
  197. package/dist/commands/ios/type.d.ts.map +1 -0
  198. package/dist/commands/ios/type.js +53 -0
  199. package/dist/commands/ios/type.js.map +1 -0
  200. package/dist/commands/ios/xcodebuild.d.ts +17 -0
  201. package/dist/commands/ios/xcodebuild.d.ts.map +1 -0
  202. package/dist/commands/ios/xcodebuild.js +59 -0
  203. package/dist/commands/ios/xcodebuild.js.map +1 -0
  204. package/dist/commands/ios/xcrun.d.ts +17 -0
  205. package/dist/commands/ios/xcrun.d.ts.map +1 -0
  206. package/dist/commands/ios/xcrun.js +60 -0
  207. package/dist/commands/ios/xcrun.js.map +1 -0
  208. package/dist/commands/login.d.ts +14 -0
  209. package/dist/commands/login.d.ts.map +1 -0
  210. package/dist/commands/login.js +22 -0
  211. package/dist/commands/login.js.map +1 -0
  212. package/dist/commands/logout.d.ts +14 -0
  213. package/dist/commands/logout.d.ts.map +1 -0
  214. package/dist/commands/logout.js +18 -0
  215. package/dist/commands/logout.js.map +1 -0
  216. package/dist/commands/session/start.d.ts +16 -0
  217. package/dist/commands/session/start.d.ts.map +1 -0
  218. package/dist/commands/session/start.js +129 -0
  219. package/dist/commands/session/start.js.map +1 -0
  220. package/dist/commands/session/status.d.ts +14 -0
  221. package/dist/commands/session/status.d.ts.map +1 -0
  222. package/dist/commands/session/status.js +65 -0
  223. package/dist/commands/session/status.js.map +1 -0
  224. package/dist/commands/session/stop.d.ts +18 -0
  225. package/dist/commands/session/stop.d.ts.map +1 -0
  226. package/dist/commands/session/stop.js +76 -0
  227. package/dist/commands/session/stop.js.map +1 -0
  228. package/dist/commands/skills/install.d.ts +18 -0
  229. package/dist/commands/skills/install.d.ts.map +1 -0
  230. package/dist/commands/skills/install.js +473 -0
  231. package/dist/commands/skills/install.js.map +1 -0
  232. package/dist/commands/xcode/attach-simulator.d.ts +18 -0
  233. package/dist/commands/xcode/attach-simulator.d.ts.map +1 -0
  234. package/dist/commands/xcode/attach-simulator.js +55 -0
  235. package/dist/commands/xcode/attach-simulator.js.map +1 -0
  236. package/dist/commands/xcode/build.d.ts +37 -0
  237. package/dist/commands/xcode/build.d.ts.map +1 -0
  238. package/dist/commands/xcode/build.js +233 -0
  239. package/dist/commands/xcode/build.js.map +1 -0
  240. package/dist/commands/xcode/create.d.ts +22 -0
  241. package/dist/commands/xcode/create.d.ts.map +1 -0
  242. package/dist/commands/xcode/create.js +187 -0
  243. package/dist/commands/xcode/create.js.map +1 -0
  244. package/dist/commands/xcode/delete.d.ts +17 -0
  245. package/dist/commands/xcode/delete.d.ts.map +1 -0
  246. package/dist/commands/xcode/delete.js +44 -0
  247. package/dist/commands/xcode/delete.js.map +1 -0
  248. package/dist/commands/xcode/get.d.ts +17 -0
  249. package/dist/commands/xcode/get.d.ts.map +1 -0
  250. package/dist/commands/xcode/get.js +59 -0
  251. package/dist/commands/xcode/get.js.map +1 -0
  252. package/dist/commands/xcode/list.d.ts +18 -0
  253. package/dist/commands/xcode/list.d.ts.map +1 -0
  254. package/dist/commands/xcode/list.js +58 -0
  255. package/dist/commands/xcode/list.js.map +1 -0
  256. package/dist/commands/xcode/sync.d.ts +24 -0
  257. package/dist/commands/xcode/sync.d.ts.map +1 -0
  258. package/dist/commands/xcode/sync.js +93 -0
  259. package/dist/commands/xcode/sync.js.map +1 -0
  260. package/dist/index.d.ts +2 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +6 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/lib/additional-files.d.ts +6 -0
  265. package/dist/lib/additional-files.d.ts.map +1 -0
  266. package/dist/lib/additional-files.js +19 -0
  267. package/dist/lib/additional-files.js.map +1 -0
  268. package/dist/lib/android-selector.d.ts +50 -0
  269. package/dist/lib/android-selector.d.ts.map +1 -0
  270. package/dist/lib/android-selector.js +103 -0
  271. package/dist/lib/android-selector.js.map +1 -0
  272. package/dist/lib/auth.d.ts +2 -0
  273. package/dist/lib/auth.d.ts.map +1 -0
  274. package/dist/lib/auth.js +60 -0
  275. package/dist/lib/auth.js.map +1 -0
  276. package/dist/lib/config.d.ts +65 -0
  277. package/dist/lib/config.d.ts.map +1 -0
  278. package/dist/lib/config.js +292 -0
  279. package/dist/lib/config.js.map +1 -0
  280. package/dist/lib/daemon-client.d.ts +9 -0
  281. package/dist/lib/daemon-client.d.ts.map +1 -0
  282. package/dist/lib/daemon-client.js +81 -0
  283. package/dist/lib/daemon-client.js.map +1 -0
  284. package/dist/lib/daemon.d.ts +41 -0
  285. package/dist/lib/daemon.d.ts.map +1 -0
  286. package/dist/lib/daemon.js +511 -0
  287. package/dist/lib/daemon.js.map +1 -0
  288. package/dist/lib/detox-version.d.ts +12 -0
  289. package/dist/lib/detox-version.d.ts.map +1 -0
  290. package/dist/lib/detox-version.js +30 -0
  291. package/dist/lib/detox-version.js.map +1 -0
  292. package/dist/lib/duration.d.ts +2 -0
  293. package/dist/lib/duration.d.ts.map +1 -0
  294. package/dist/lib/duration.js +37 -0
  295. package/dist/lib/duration.js.map +1 -0
  296. package/dist/lib/formatting.d.ts +3 -0
  297. package/dist/lib/formatting.d.ts.map +1 -0
  298. package/dist/lib/formatting.js +31 -0
  299. package/dist/lib/formatting.js.map +1 -0
  300. package/dist/lib/ignore-patterns.d.ts +2 -0
  301. package/dist/lib/ignore-patterns.d.ts.map +1 -0
  302. package/dist/lib/ignore-patterns.js +18 -0
  303. package/dist/lib/ignore-patterns.js.map +1 -0
  304. package/dist/lib/instance-client-factory.d.ts +29 -0
  305. package/dist/lib/instance-client-factory.d.ts.map +1 -0
  306. package/dist/lib/instance-client-factory.js +87 -0
  307. package/dist/lib/instance-client-factory.js.map +1 -0
  308. package/dist/lib/launch-app-runtime.d.ts +23 -0
  309. package/dist/lib/launch-app-runtime.d.ts.map +1 -0
  310. package/dist/lib/launch-app-runtime.js +58 -0
  311. package/dist/lib/launch-app-runtime.js.map +1 -0
  312. package/dist/lib/onboarding.d.ts +42 -0
  313. package/dist/lib/onboarding.d.ts.map +1 -0
  314. package/dist/lib/onboarding.js +296 -0
  315. package/dist/lib/onboarding.js.map +1 -0
  316. package/dist/lib/project-detection.d.ts +11 -0
  317. package/dist/lib/project-detection.d.ts.map +1 -0
  318. package/dist/lib/project-detection.js +122 -0
  319. package/dist/lib/project-detection.js.map +1 -0
  320. package/dist/lib/remote-skills.d.ts +47 -0
  321. package/dist/lib/remote-skills.d.ts.map +1 -0
  322. package/dist/lib/remote-skills.js +241 -0
  323. package/dist/lib/remote-skills.js.map +1 -0
  324. package/dist/lib/reverse-port-mapping.d.ts +6 -0
  325. package/dist/lib/reverse-port-mapping.d.ts.map +1 -0
  326. package/dist/lib/reverse-port-mapping.js +24 -0
  327. package/dist/lib/reverse-port-mapping.js.map +1 -0
  328. package/dist/lib/skills.d.ts +17 -0
  329. package/dist/lib/skills.d.ts.map +1 -0
  330. package/dist/lib/skills.js +153 -0
  331. package/dist/lib/skills.js.map +1 -0
  332. package/dist/lib/xcode-sandbox.d.ts +2 -0
  333. package/dist/lib/xcode-sandbox.d.ts.map +1 -0
  334. package/dist/lib/xcode-sandbox.js +7 -0
  335. package/dist/lib/xcode-sandbox.js.map +1 -0
  336. package/package.json +69 -13
  337. package/.npmignore +0 -2
  338. package/build/lib/index.js +0 -1498
  339. package/build/lib/index.map +0 -1
  340. package/build/lib/utils/courier.js +0 -98
  341. package/build/lib/utils/courier.map +0 -1
  342. package/build/lib/utils/polyfill.js +0 -53
  343. package/build/lib/utils/polyfill.map +0 -1
  344. package/build.sh +0 -9
  345. package/index.js +0 -2
  346. package/lib/index.js +0 -284
  347. package/lib/utils/courier.js +0 -108
  348. package/lib/utils/polyfill.js +0 -42
  349. package/native.js +0 -2
@@ -0,0 +1,84 @@
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 path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const core_1 = require("@oclif/core");
9
+ const base_command_1 = require("../../base-command");
10
+ class AssetPull extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(AssetPull);
13
+ this.setParsedFlags(flags);
14
+ await this.withAuth(async () => {
15
+ let asset;
16
+ // If the argument contains underscore prefix pattern, treat as ID; otherwise as name
17
+ const isId = args.id_or_name.includes('_');
18
+ if (isId) {
19
+ const fetched = await this.client.assets.get(args.id_or_name, { includeDownloadUrl: true });
20
+ asset = fetched;
21
+ }
22
+ else {
23
+ const searchName = flags.name || args.id_or_name;
24
+ const fetched = await this.client.assets.list({
25
+ nameFilter: searchName,
26
+ includeDownloadUrl: true,
27
+ });
28
+ const list = fetched;
29
+ if (list.length === 0) {
30
+ this.error(`Asset with name "${searchName}" not found`);
31
+ }
32
+ if (list.length > 1) {
33
+ const matches = list
34
+ .map((item) => item.metadata?.id || item.id || item.name || '<unknown>')
35
+ .slice(0, 5)
36
+ .join(', ');
37
+ this.error(`Asset name "${searchName}" matched multiple assets (${matches}). Use an asset ID or narrow the name first with \`lim asset list --name "${searchName}" --json\`.`);
38
+ }
39
+ asset = list[0];
40
+ }
41
+ if (!asset.signedDownloadUrl) {
42
+ this.error('Asset does not have a download URL');
43
+ }
44
+ const outDir = path_1.default.resolve(flags.output);
45
+ fs_1.default.mkdirSync(outDir, { recursive: true });
46
+ const fullPath = path_1.default.join(outDir, asset.name);
47
+ this.info(`Pulling to ${fullPath}`);
48
+ const resp = await fetch(asset.signedDownloadUrl);
49
+ if (!resp.ok) {
50
+ const body = await resp.text();
51
+ this.error(`Failed to download file: ${body}`);
52
+ }
53
+ const buffer = Buffer.from(await resp.arrayBuffer());
54
+ fs_1.default.writeFileSync(fullPath, buffer);
55
+ this.output(`Saved to ${fullPath}`);
56
+ });
57
+ }
58
+ }
59
+ AssetPull.summary = 'Download an asset file';
60
+ AssetPull.description = 'Download an asset by ID or by name into a local directory. For reliable automation, prefer an asset ID or ensure the name resolves to exactly one asset.';
61
+ AssetPull.examples = [
62
+ '<%= config.bin %> asset pull <ID>',
63
+ '<%= config.bin %> asset pull my-app.apk',
64
+ '<%= config.bin %> asset list --name my-app.apk --json',
65
+ '<%= config.bin %> asset pull <ID> -o ./downloads',
66
+ '<%= config.bin %> asset pull my-app.apk --name my-app.apk',
67
+ ];
68
+ AssetPull.args = {
69
+ id_or_name: core_1.Args.string({ description: 'Asset ID or asset name to download', required: true }),
70
+ };
71
+ AssetPull.flags = {
72
+ ...base_command_1.BaseCommand.baseFlags,
73
+ name: core_1.Flags.string({
74
+ char: 'n',
75
+ description: 'Explicit asset name to search for when the positional argument is not an asset ID',
76
+ }),
77
+ output: core_1.Flags.string({
78
+ char: 'o',
79
+ description: 'Output directory where the downloaded file should be written',
80
+ default: '.',
81
+ }),
82
+ };
83
+ exports.default = AssetPull;
84
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/asset/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class AssetPush extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ file: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
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=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/push.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,WAAW,SACgK;IAClL,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
@@ -0,0 +1,43 @@
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 path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const core_1 = require("@oclif/core");
9
+ const base_command_1 = require("../../base-command");
10
+ class AssetPush extends base_command_1.BaseCommand {
11
+ async run() {
12
+ const { args, flags } = await this.parse(AssetPush);
13
+ this.setParsedFlags(flags);
14
+ const filePath = path_1.default.resolve(args.file);
15
+ if (!fs_1.default.existsSync(filePath)) {
16
+ this.error(`File not found: ${filePath}`);
17
+ }
18
+ const assetName = flags.name || path_1.default.basename(filePath);
19
+ this.info(`Name: ${assetName}`);
20
+ await this.withAuth(async () => {
21
+ const asset = await this.client.assets.getOrUpload({
22
+ path: filePath,
23
+ name: assetName,
24
+ });
25
+ this.output(`ID: ${asset.id}`);
26
+ });
27
+ }
28
+ }
29
+ AssetPush.summary = 'Upload an asset file';
30
+ AssetPush.description = 'Upload a local file to Limrun asset storage so it can be installed on instances or reused by later commands. The asset name defaults to the filename unless you provide `-n`.';
31
+ AssetPush.examples = [
32
+ '<%= config.bin %> asset push ./app.apk',
33
+ '<%= config.bin %> asset push ./app.ipa -n my-app',
34
+ ];
35
+ AssetPush.args = {
36
+ file: core_1.Args.string({ description: 'Path to the local file to upload as an asset', required: true }),
37
+ };
38
+ AssetPush.flags = {
39
+ ...base_command_1.BaseCommand.baseFlags,
40
+ name: core_1.Flags.string({ char: 'n', description: 'Asset name to store. Defaults to the source filename.' }),
41
+ };
42
+ exports.default = AssetPush;
43
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/asset/push.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,sCAA0C;AAC1C,qDAAiD;AAEjD,MAAqB,SAAU,SAAQ,0BAAW;IAkBhD,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,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QAEhC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACjD,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;;AArCM,iBAAO,GAAG,sBAAsB,CAAC;AACjC,qBAAW,GAChB,+KAA+K,CAAC;AAC3K,kBAAQ,GAAG;IAChB,wCAAwC;IACxC,kDAAkD;CACnD,CAAC;AAEK,cAAI,GAAG;IACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnG,CAAC;AAEK,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACxG,CAAC;kBAhBiB,SAAS"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../base-command';
2
+ export default class Go extends BaseCommand {
3
+ static baseFlags: typeof BaseCommand.baseFlags;
4
+ static summary: string;
5
+ static description: string;
6
+ static examples: string[];
7
+ run(): Promise<void>;
8
+ private setupExistingProject;
9
+ private printSkillSummary;
10
+ private printEnvWarnings;
11
+ private validateAuth;
12
+ private runSampleFlow;
13
+ private outputBuildInProgress;
14
+ private outputSampleRecovery;
15
+ private outputSampleNextStep;
16
+ }
17
+ //# sourceMappingURL=go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/commands/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,CAAC,OAAO,OAAO,EAAG,SAAQ,WAAW;IACzC,MAAM,CAAC,SAAS,EAGA,OAAO,WAAW,CAAC,SAAS,CAAC;IAC7C,MAAM,CAAC,OAAO,SAA6B;IAC3C,MAAM,CAAC,WAAW,SAAmF;IACrG,MAAM,CAAC,QAAQ,WAA4B;IAErC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBZ,oBAAoB;IA8BlC,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,gBAAgB;YAMV,YAAY;YAWZ,aAAa;IAyE3B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;CAU7B"}
@@ -0,0 +1,201 @@
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 path_1 = __importDefault(require("path"));
7
+ const base_command_1 = require("../base-command");
8
+ const config_1 = require("../lib/config");
9
+ const project_detection_1 = require("../lib/project-detection");
10
+ const onboarding_1 = require("../lib/onboarding");
11
+ const xcode_sandbox_1 = require("../lib/xcode-sandbox");
12
+ const VERSION = require('../../package.json').version;
13
+ const IOS_SKILL = 'limrun-xcode-and-ios-simulator';
14
+ const EXPO_SKILL = 'limrun-expo-development';
15
+ class Go extends base_command_1.BaseCommand {
16
+ async run() {
17
+ const { flags } = await this.parse(Go);
18
+ this.setParsedFlags(flags);
19
+ await (0, onboarding_1.ensureLoggedIn)({
20
+ version: VERSION,
21
+ apiKey: flags['api-key'],
22
+ log: (message) => this.info(message),
23
+ });
24
+ const apiKey = flags['api-key'] || (0, config_1.readConfig)().apiKey;
25
+ const allowAuthRetry = !flags['api-key'];
26
+ const detection = (0, project_detection_1.detectProject)(process.cwd());
27
+ if (detection.kind === 'native-ios') {
28
+ await this.setupExistingProject(detection, [IOS_SKILL], apiKey, allowAuthRetry);
29
+ return;
30
+ }
31
+ if (detection.kind === 'expo') {
32
+ await this.setupExistingProject(detection, [IOS_SKILL, EXPO_SKILL], apiKey, allowAuthRetry);
33
+ return;
34
+ }
35
+ await this.runSampleFlow(apiKey, allowAuthRetry);
36
+ }
37
+ async setupExistingProject(detection, skillNames, apiKey, allowAuthRetry) {
38
+ const projectRoot = detection.projectDir;
39
+ const projectPath = humanPath(projectRoot);
40
+ await this.validateAuth(allowAuthRetry);
41
+ this.info('Detected an iOS/Expo project.');
42
+ this.info('Installing Limrun agent skills...');
43
+ const results = await (0, onboarding_1.installProjectSkills)({ projectRoot, skillNames });
44
+ this.printSkillSummary(results);
45
+ this.printEnvWarnings((0, onboarding_1.ensureProjectEnvApiKey)(projectRoot, apiKey).warnings);
46
+ this.info('Configured .env for Limrun.');
47
+ this.output('');
48
+ if (projectPath !== '.') {
49
+ this.output(`Project: ${projectPath}`);
50
+ this.output(`Run your coding agent from: cd ${shellQuote(projectPath)}`);
51
+ this.output('');
52
+ }
53
+ this.output('Next steps: open your coding agent in this project and ask:');
54
+ if (detection.kind === 'expo') {
55
+ this.output('"Build and run this Expo app with Limrun. Share the simulator URL when it is ready."');
56
+ }
57
+ else {
58
+ this.output('"Build and run this iOS app with Limrun. Share the simulator URL when it is ready."');
59
+ }
60
+ }
61
+ printSkillSummary(results) {
62
+ const installed = results.filter((result) => result.status === 'installed').length;
63
+ const unchanged = results.filter((result) => result.status === 'unchanged').length;
64
+ const skipped = results.filter((result) => result.status === 'skipped');
65
+ if (installed > 0) {
66
+ this.info('Limrun skills installed for Claude Code and Cursor/OpenCode-compatible agents.');
67
+ }
68
+ else if (unchanged > 0 && skipped.length === 0) {
69
+ this.info('Limrun skills are already installed for Claude Code and Cursor/OpenCode-compatible agents.');
70
+ }
71
+ if (skipped.length > 0) {
72
+ this.info('Skipped skill directories with local changes:');
73
+ for (const result of skipped) {
74
+ this.info(` ${humanPath(result.path)}`);
75
+ }
76
+ this.info('Run `lim skills install` interactively, or rerun it with `--force`, to update them.');
77
+ }
78
+ }
79
+ printEnvWarnings(warnings) {
80
+ for (const warning of warnings) {
81
+ this.info(`Warning: ${warning}`);
82
+ }
83
+ }
84
+ async validateAuth(allowRetry) {
85
+ const check = async () => {
86
+ await this.client.iosInstances.list({ state: 'ready' });
87
+ };
88
+ if (allowRetry) {
89
+ await this.withAuth(check);
90
+ return;
91
+ }
92
+ await check();
93
+ }
94
+ async runSampleFlow(apiKey, allowAuthRetry) {
95
+ const cwd = process.cwd();
96
+ this.info('No iOS or Expo project detected. Setting up the sample app.');
97
+ await this.validateAuth(allowAuthRetry);
98
+ const sample = await (0, onboarding_1.ensureSampleRepo)({ cwd });
99
+ this.info(`${sample.reused ? 'Using existing' : 'Cloned'} ${humanPath(sample.path)}.`);
100
+ this.printEnvWarnings((0, onboarding_1.ensureProjectEnvApiKey)(sample.path, apiKey).warnings);
101
+ this.info('Configured .env for Limrun.');
102
+ let recoveryPrinted = false;
103
+ try {
104
+ await this.withAuth(async () => {
105
+ this.info('Preparing a Limrun iOS simulator with Xcode...');
106
+ const instance = await this.client.iosInstances.create({
107
+ wait: true,
108
+ reuseIfExists: true,
109
+ metadata: {
110
+ displayName: 'lim-go-sample',
111
+ labels: {
112
+ name: 'lim-go-sample',
113
+ repo: 'sample-native-app',
114
+ },
115
+ },
116
+ spec: {
117
+ sandbox: {
118
+ xcode: {
119
+ enabled: true,
120
+ },
121
+ },
122
+ },
123
+ });
124
+ (0, config_1.registerCreatedInstance)(instance, ['xcode']);
125
+ const xcodeUrl = instance.status.sandbox?.xcode?.url;
126
+ if (!xcodeUrl) {
127
+ this.error('The iOS instance is ready, but its Xcode sandbox URL is missing.');
128
+ }
129
+ const xcode = await this.client.xcodeInstances.createClient({
130
+ apiUrl: xcodeUrl,
131
+ token: instance.status.token,
132
+ });
133
+ this.info('Syncing sample app...');
134
+ await xcode.sync(sample.path, { watch: false });
135
+ this.info('Building and launching sample app...');
136
+ const xcodeSandboxId = (0, xcode_sandbox_1.xcodeSandboxIdFromUrl)(xcodeUrl);
137
+ if (xcodeSandboxId) {
138
+ this.outputBuildInProgress(xcodeSandboxId);
139
+ }
140
+ const build = xcode.xcodebuild();
141
+ const result = await build;
142
+ if (result.exitCode !== 0) {
143
+ this.outputSampleRecovery(sample.path);
144
+ recoveryPrinted = true;
145
+ this.error(`Sample build failed with exit code ${result.exitCode}`, { exit: result.exitCode });
146
+ }
147
+ this.output('Build completed successfully!');
148
+ this.output('');
149
+ this.output('App deployed and running in a Limrun cloud simulator:');
150
+ this.output(this.consoleStreamUrl(instance.metadata.id));
151
+ this.outputSampleNextStep(sample.path);
152
+ });
153
+ }
154
+ catch (err) {
155
+ if (!recoveryPrinted) {
156
+ this.outputSampleRecovery(sample.path);
157
+ }
158
+ throw err;
159
+ }
160
+ }
161
+ outputBuildInProgress(sandboxId) {
162
+ this.output('Build is in progress. You can follow the logs from:');
163
+ this.output(this.consoleBuildUrl(sandboxId));
164
+ }
165
+ outputSampleRecovery(samplePath) {
166
+ this.output('');
167
+ this.output(`Sample app is available at ${humanPath(samplePath)}.`);
168
+ this.output('Open it with your coding agent to continue.');
169
+ }
170
+ outputSampleNextStep(samplePath) {
171
+ this.output('');
172
+ this.output('Next steps:');
173
+ this.output(` cd ${shellQuote(humanPath(samplePath))}`);
174
+ this.output(' Open your favorite coding agent and ask:');
175
+ this.output(' "Change `Hello, world!` to `Hello, Limrun!`, rebuild with Limrun, and show me the updated simulator."');
176
+ this.output(' Start building your app.');
177
+ }
178
+ }
179
+ Go.baseFlags = {
180
+ 'api-key': base_command_1.BaseCommand.baseFlags['api-key'],
181
+ quiet: base_command_1.BaseCommand.baseFlags.quiet,
182
+ };
183
+ Go.summary = 'Get started with Limrun';
184
+ Go.description = 'Prepare your app for Limrun, or launch a working sample in a cloud simulator.';
185
+ Go.examples = ['<%= config.bin %> go'];
186
+ exports.default = Go;
187
+ function humanPath(absolutePath) {
188
+ const relative = path_1.default.relative(process.cwd(), absolutePath);
189
+ if (!relative)
190
+ return '.';
191
+ if (relative.startsWith('..') || path_1.default.isAbsolute(relative))
192
+ return absolutePath;
193
+ return relative;
194
+ }
195
+ function shellQuote(value) {
196
+ if (/^[A-Za-z0-9_./:-]+$/.test(value)) {
197
+ return value;
198
+ }
199
+ return `'${value.replace(/'/g, "'\\''")}'`;
200
+ }
201
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/commands/go.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosAppLog extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ bundleId: 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
+ follow: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ tail: import("@oclif/core/lib/interfaces").OptionFlag<number, 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
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=app-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-log.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/app-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAAyD;IACvE,MAAM,CAAC,WAAW,SACoJ;IACtK,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAeV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkD3B"}
@@ -0,0 +1,86 @@
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 IosAppLog extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { args, flags } = await this.parse(IosAppLog);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ const resolvedInstance = this.resolveIosInstance(flags.id);
12
+ const id = resolvedInstance.id;
13
+ if (!flags.follow) {
14
+ if ((0, instance_client_factory_1.hasActiveSession)(id)) {
15
+ const output = await (0, instance_client_factory_1.sendSessionCommand)(id, 'app-log-tail', [args.bundleId, flags.tail]);
16
+ this.log(String(output));
17
+ }
18
+ else {
19
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
20
+ try {
21
+ const output = await client.appLogTail(args.bundleId, flags.tail);
22
+ this.log(output);
23
+ }
24
+ finally {
25
+ disconnect();
26
+ }
27
+ }
28
+ return;
29
+ }
30
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
31
+ try {
32
+ const logStream = client.streamAppLog(args.bundleId);
33
+ logStream.on('line', (line) => {
34
+ process.stdout.write(line + '\n');
35
+ });
36
+ logStream.on('error', (err) => {
37
+ this.warn(`App log stream error: ${err.message}`);
38
+ });
39
+ await new Promise((resolve) => {
40
+ const keepAlive = setInterval(() => { }, 1 << 30);
41
+ const shutdown = () => {
42
+ clearInterval(keepAlive);
43
+ logStream.stop();
44
+ resolve();
45
+ };
46
+ process.on('SIGINT', shutdown);
47
+ process.on('SIGTERM', shutdown);
48
+ });
49
+ }
50
+ finally {
51
+ disconnect();
52
+ }
53
+ });
54
+ }
55
+ }
56
+ IosAppLog.summary = 'Stream or tail app logs from a running iOS instance';
57
+ IosAppLog.description = 'Read logs for a specific installed app on a running iOS instance. Use `--tail` for recent lines, or `--follow` to keep streaming logs until you stop the command.';
58
+ IosAppLog.examples = [
59
+ '<%= config.bin %> ios app-log com.example.app',
60
+ '<%= config.bin %> ios app-log com.example.app --tail 50',
61
+ '<%= config.bin %> ios app-log com.example.app --follow --id <instance-ID>',
62
+ ];
63
+ IosAppLog.args = {
64
+ bundleId: core_1.Args.string({
65
+ description: 'Bundle identifier of the installed app whose logs should be read',
66
+ required: true,
67
+ }),
68
+ };
69
+ IosAppLog.flags = {
70
+ ...base_command_1.BaseCommand.baseFlags,
71
+ id: core_1.Flags.string({
72
+ description: 'iOS instance ID to target. Defaults to the last created iOS instance.',
73
+ }),
74
+ follow: core_1.Flags.boolean({
75
+ char: 'f',
76
+ description: 'Keep streaming log lines until interrupted',
77
+ default: false,
78
+ }),
79
+ tail: core_1.Flags.integer({
80
+ char: 'n',
81
+ description: 'Number of recent lines to fetch when not using `--follow`.',
82
+ default: 100,
83
+ }),
84
+ };
85
+ exports.default = IosAppLog;
86
+ //# sourceMappingURL=app-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-log.js","sourceRoot":"","sources":["../../../src/commands/ios/app-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosCp extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ name: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ path: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=cp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/cp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,OAAO,SAA4C;IAC1D,MAAM,CAAC,WAAW,SACyH;IAC3I,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;;MAST;IAEF,MAAM,CAAC,KAAK;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3B"}
@@ -0,0 +1,64 @@
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 resolvedInstance = this.resolveIosInstance(flags.id);
17
+ const id = resolvedInstance.id;
18
+ if (false) {
19
+ this.error('ios cp only supports iOS instances');
20
+ }
21
+ const localPath = path_1.default.resolve(args.path);
22
+ if (!fs_1.default.existsSync(localPath)) {
23
+ this.error(`File not found: ${localPath}`);
24
+ }
25
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
26
+ try {
27
+ const sandboxPath = await client.cp(args.name, localPath);
28
+ if (flags.json) {
29
+ this.outputJson({ sandboxPath });
30
+ }
31
+ else {
32
+ this.output(sandboxPath);
33
+ }
34
+ }
35
+ finally {
36
+ disconnect();
37
+ }
38
+ });
39
+ }
40
+ }
41
+ IosCp.summary = 'Copy a local file into the iOS sandbox';
42
+ 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`.';
43
+ IosCp.examples = [
44
+ '<%= config.bin %> ios cp test.txt ./fixtures/test.txt',
45
+ '<%= config.bin %> ios cp input.json ./payloads/input.json --json',
46
+ ];
47
+ IosCp.args = {
48
+ name: core_1.Args.string({
49
+ description: 'Filename to use inside the simulator sandbox.',
50
+ required: true,
51
+ }),
52
+ path: core_1.Args.string({
53
+ description: 'Local file path to upload into the simulator sandbox.',
54
+ required: true,
55
+ }),
56
+ };
57
+ IosCp.flags = {
58
+ ...base_command_1.BaseCommand.baseFlags,
59
+ id: core_1.Flags.string({
60
+ description: 'iOS instance ID to target. Defaults to the last created iOS instance.',
61
+ }),
62
+ };
63
+ exports.default = IosCp;
64
+ //# 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,+EAAyE;AAEzE,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,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,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,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC1D,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;;AAtDM,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"}
@@ -0,0 +1,25 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class IosCreate 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
+ model: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'reuse-if-exists': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ 'install-asset': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ install: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ xcode: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
21
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
22
+ };
23
+ run(): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=create.d.ts.map