@limrun/cli 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -115
- package/dist/base-command.d.ts +5 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +11 -0
- package/dist/base-command.js.map +1 -1
- package/dist/commands/android/connect.d.ts +1 -1
- package/dist/commands/android/connect.d.ts.map +1 -1
- package/dist/commands/android/connect.js +4 -3
- package/dist/commands/android/connect.js.map +1 -1
- package/dist/commands/android/create.d.ts.map +1 -1
- package/dist/commands/android/create.js +2 -0
- package/dist/commands/android/create.js.map +1 -1
- package/dist/commands/build.d.ts +2 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +15 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/delete/index.d.ts.map +1 -1
- package/dist/commands/delete/index.js +2 -1
- package/dist/commands/delete/index.js.map +1 -1
- package/dist/commands/exec/element-tree.d.ts +1 -1
- package/dist/commands/exec/element-tree.d.ts.map +1 -1
- package/dist/commands/exec/element-tree.js +5 -4
- package/dist/commands/exec/element-tree.js.map +1 -1
- package/dist/commands/exec/install-app.d.ts +1 -1
- package/dist/commands/exec/install-app.d.ts.map +1 -1
- package/dist/commands/exec/install-app.js +5 -4
- package/dist/commands/exec/install-app.js.map +1 -1
- package/dist/commands/exec/open-url.d.ts +1 -1
- package/dist/commands/exec/open-url.d.ts.map +1 -1
- package/dist/commands/exec/open-url.js +5 -4
- package/dist/commands/exec/open-url.js.map +1 -1
- package/dist/commands/exec/press-key.d.ts +1 -1
- package/dist/commands/exec/press-key.d.ts.map +1 -1
- package/dist/commands/exec/press-key.js +5 -4
- package/dist/commands/exec/press-key.js.map +1 -1
- package/dist/commands/exec/record.d.ts +1 -1
- package/dist/commands/exec/record.d.ts.map +1 -1
- package/dist/commands/exec/record.js +8 -7
- package/dist/commands/exec/record.js.map +1 -1
- package/dist/commands/exec/screenshot.d.ts +1 -1
- package/dist/commands/exec/screenshot.d.ts.map +1 -1
- package/dist/commands/exec/screenshot.js +6 -5
- package/dist/commands/exec/screenshot.js.map +1 -1
- package/dist/commands/exec/scroll.d.ts +1 -1
- package/dist/commands/exec/scroll.d.ts.map +1 -1
- package/dist/commands/exec/scroll.js +5 -4
- package/dist/commands/exec/scroll.js.map +1 -1
- package/dist/commands/exec/tap-element.d.ts +1 -1
- package/dist/commands/exec/tap-element.d.ts.map +1 -1
- package/dist/commands/exec/tap-element.js +6 -5
- package/dist/commands/exec/tap-element.js.map +1 -1
- package/dist/commands/exec/tap.d.ts +1 -1
- package/dist/commands/exec/tap.d.ts.map +1 -1
- package/dist/commands/exec/tap.js +5 -4
- package/dist/commands/exec/tap.js.map +1 -1
- package/dist/commands/exec/type.d.ts +1 -1
- package/dist/commands/exec/type.d.ts.map +1 -1
- package/dist/commands/exec/type.js +5 -4
- package/dist/commands/exec/type.js.map +1 -1
- package/dist/commands/ios/create.d.ts.map +1 -1
- package/dist/commands/ios/create.js +1 -0
- package/dist/commands/ios/create.js.map +1 -1
- package/dist/commands/ios/launch-app.d.ts +1 -1
- package/dist/commands/ios/launch-app.d.ts.map +1 -1
- package/dist/commands/ios/launch-app.js +5 -4
- package/dist/commands/ios/launch-app.js.map +1 -1
- package/dist/commands/ios/list-apps.d.ts +1 -1
- package/dist/commands/ios/list-apps.d.ts.map +1 -1
- package/dist/commands/ios/list-apps.js +5 -4
- package/dist/commands/ios/list-apps.js.map +1 -1
- package/dist/commands/ios/log.d.ts +1 -1
- package/dist/commands/ios/log.d.ts.map +1 -1
- package/dist/commands/ios/log.js +6 -5
- package/dist/commands/ios/log.js.map +1 -1
- package/dist/commands/ios/terminate-app.d.ts +1 -1
- package/dist/commands/ios/terminate-app.d.ts.map +1 -1
- package/dist/commands/ios/terminate-app.js +5 -4
- package/dist/commands/ios/terminate-app.js.map +1 -1
- package/dist/commands/session/start.d.ts +1 -1
- package/dist/commands/session/start.d.ts.map +1 -1
- package/dist/commands/session/start.js +13 -12
- package/dist/commands/session/start.js.map +1 -1
- package/dist/commands/sync.d.ts +2 -2
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +14 -10
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/xcode/create.d.ts.map +1 -1
- package/dist/commands/xcode/create.js +2 -0
- package/dist/commands/xcode/create.js.map +1 -1
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +47 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/instance-client-factory.js +2 -2
- package/dist/lib/instance-client-factory.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/connect/android.d.ts +0 -15
- package/dist/commands/connect/android.d.ts.map +0 -1
- package/dist/commands/connect/android.js +0 -80
- package/dist/commands/connect/android.js.map +0 -1
- package/dist/commands/delete/android.d.ts +0 -14
- package/dist/commands/delete/android.d.ts.map +0 -1
- package/dist/commands/delete/android.js +0 -22
- package/dist/commands/delete/android.js.map +0 -1
- package/dist/commands/delete/asset.d.ts +0 -14
- package/dist/commands/delete/asset.d.ts.map +0 -1
- package/dist/commands/delete/asset.js +0 -22
- package/dist/commands/delete/asset.js.map +0 -1
- package/dist/commands/delete/ios.d.ts +0 -14
- package/dist/commands/delete/ios.d.ts.map +0 -1
- package/dist/commands/delete/ios.js +0 -24
- package/dist/commands/delete/ios.js.map +0 -1
- package/dist/commands/delete/xcode.d.ts +0 -14
- package/dist/commands/delete/xcode.d.ts.map +0 -1
- package/dist/commands/delete/xcode.js +0 -22
- package/dist/commands/delete/xcode.js.map +0 -1
- package/dist/commands/exec/launch-app.d.ts +0 -16
- package/dist/commands/exec/launch-app.d.ts.map +0 -1
- package/dist/commands/exec/launch-app.js +0 -49
- package/dist/commands/exec/launch-app.js.map +0 -1
- package/dist/commands/exec/list-apps.d.ts +0 -14
- package/dist/commands/exec/list-apps.d.ts.map +0 -1
- package/dist/commands/exec/list-apps.js +0 -45
- package/dist/commands/exec/list-apps.js.map +0 -1
- package/dist/commands/exec/log.d.ts +0 -17
- package/dist/commands/exec/log.d.ts.map +0 -1
- package/dist/commands/exec/log.js +0 -80
- package/dist/commands/exec/log.js.map +0 -1
- package/dist/commands/exec/terminate-app.d.ts +0 -15
- package/dist/commands/exec/terminate-app.d.ts.map +0 -1
- package/dist/commands/exec/terminate-app.js +0 -39
- package/dist/commands/exec/terminate-app.js.map +0 -1
- package/dist/commands/get/android.d.ts +0 -19
- package/dist/commands/get/android.d.ts.map +0 -1
- package/dist/commands/get/android.js +0 -69
- package/dist/commands/get/android.js.map +0 -1
- package/dist/commands/get/asset.d.ts +0 -18
- package/dist/commands/get/asset.d.ts.map +0 -1
- package/dist/commands/get/asset.js +0 -74
- package/dist/commands/get/asset.js.map +0 -1
- package/dist/commands/get/ios.d.ts +0 -19
- package/dist/commands/get/ios.d.ts.map +0 -1
- package/dist/commands/get/ios.js +0 -69
- package/dist/commands/get/ios.js.map +0 -1
- package/dist/commands/get/xcode.d.ts +0 -17
- package/dist/commands/get/xcode.d.ts.map +0 -1
- package/dist/commands/get/xcode.js +0 -65
- package/dist/commands/get/xcode.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -16
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js +0 -71
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -15
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -40
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/run/android.d.ts +0 -24
- package/dist/commands/run/android.d.ts.map +0 -1
- package/dist/commands/run/android.js +0 -183
- package/dist/commands/run/android.js.map +0 -1
- package/dist/commands/run/ios.d.ts +0 -23
- package/dist/commands/run/ios.d.ts.map +0 -1
- package/dist/commands/run/ios.js +0 -129
- package/dist/commands/run/ios.js.map +0 -1
- package/dist/commands/run/xcode.d.ts +0 -19
- package/dist/commands/run/xcode.d.ts.map +0 -1
- package/dist/commands/run/xcode.js +0 -81
- package/dist/commands/run/xcode.js.map +0 -1
package/README.md
CHANGED
|
@@ -52,14 +52,27 @@ lim xcode --help # All Xcode commands
|
|
|
52
52
|
lim asset --help # All asset commands
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
**Instance ID is optional** on interaction commands. When omitted, the CLI uses the last created instance of the matching type:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
lim ios create # Creates ios_abc123, remembers it
|
|
59
|
+
lim ios screenshot -o test.png # Uses ios_abc123 automatically
|
|
60
|
+
lim ios tap 100 200 # Still uses ios_abc123
|
|
61
|
+
lim session start # Starts session for ios_abc123
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
You can always provide an ID explicitly to target a specific instance:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
lim ios screenshot ios_def456 -o test.png
|
|
68
|
+
```
|
|
69
|
+
|
|
55
70
|
**Top-level shortcuts** are available for common actions — the platform is auto-detected from the instance ID prefix:
|
|
56
71
|
|
|
57
72
|
```bash
|
|
58
|
-
lim screenshot
|
|
59
|
-
lim tap
|
|
60
|
-
lim delete
|
|
61
|
-
lim sync <id> ./path # Works for iOS and Xcode instances
|
|
62
|
-
lim build <id> # Works for iOS and Xcode instances
|
|
73
|
+
lim screenshot ios_abc123 # Works for both iOS and Android
|
|
74
|
+
lim tap 100 200 ios_abc123 # Auto-detects platform from ID prefix
|
|
75
|
+
lim delete ios_abc123 # Auto-detects resource type from ID prefix
|
|
63
76
|
```
|
|
64
77
|
|
|
65
78
|
## Commands
|
|
@@ -130,74 +143,76 @@ lim ios list --json # JSON output
|
|
|
130
143
|
|
|
131
144
|
#### Device Interaction
|
|
132
145
|
|
|
146
|
+
All interaction commands accept an optional `[ID]` as the last argument. When omitted, the last created iOS instance is used.
|
|
147
|
+
|
|
133
148
|
```bash
|
|
134
149
|
# Screenshots
|
|
135
|
-
lim ios screenshot
|
|
136
|
-
lim ios screenshot
|
|
150
|
+
lim ios screenshot -o screenshot.png
|
|
151
|
+
lim ios screenshot # Output base64 to stdout
|
|
137
152
|
|
|
138
153
|
# Tapping
|
|
139
|
-
lim ios tap
|
|
140
|
-
lim ios tap-element
|
|
141
|
-
lim ios tap-element
|
|
154
|
+
lim ios tap 100 200
|
|
155
|
+
lim ios tap-element --label "Submit"
|
|
156
|
+
lim ios tap-element --accessibility-id btn_ok
|
|
142
157
|
|
|
143
158
|
# Text input
|
|
144
|
-
lim ios type
|
|
145
|
-
lim ios type
|
|
146
|
-
lim ios press-key
|
|
147
|
-
lim ios press-key
|
|
159
|
+
lim ios type "Hello World"
|
|
160
|
+
lim ios type "search query" --press-enter
|
|
161
|
+
lim ios press-key enter
|
|
162
|
+
lim ios press-key a --modifier shift
|
|
148
163
|
|
|
149
164
|
# Scrolling
|
|
150
|
-
lim ios scroll
|
|
165
|
+
lim ios scroll down --amount 500
|
|
151
166
|
|
|
152
167
|
# UI inspection
|
|
153
|
-
lim ios element-tree
|
|
154
|
-
lim ios element-tree
|
|
168
|
+
lim ios element-tree
|
|
169
|
+
lim ios element-tree | jq '.'
|
|
155
170
|
|
|
156
171
|
# Open URLs / deep links
|
|
157
|
-
lim ios open-url
|
|
158
|
-
lim ios open-url
|
|
172
|
+
lim ios open-url https://example.com
|
|
173
|
+
lim ios open-url myapp://settings
|
|
159
174
|
```
|
|
160
175
|
|
|
161
176
|
#### App Management (iOS only)
|
|
162
177
|
|
|
163
178
|
```bash
|
|
164
179
|
# Install an app (local file auto-uploads, or use URL)
|
|
165
|
-
lim ios install-app
|
|
166
|
-
lim ios install-app
|
|
180
|
+
lim ios install-app ./MyApp.ipa
|
|
181
|
+
lim ios install-app https://example.com/app.ipa
|
|
167
182
|
|
|
168
183
|
# Launch / terminate
|
|
169
|
-
lim ios launch-app
|
|
170
|
-
lim ios launch-app
|
|
171
|
-
lim ios terminate-app
|
|
184
|
+
lim ios launch-app com.example.myapp
|
|
185
|
+
lim ios launch-app com.example.myapp --mode RelaunchIfRunning
|
|
186
|
+
lim ios terminate-app com.example.myapp
|
|
172
187
|
|
|
173
188
|
# List installed apps
|
|
174
|
-
lim ios list-apps
|
|
189
|
+
lim ios list-apps
|
|
175
190
|
```
|
|
176
191
|
|
|
177
192
|
#### Log Streaming (iOS only)
|
|
178
193
|
|
|
179
194
|
```bash
|
|
180
195
|
# Tail recent logs
|
|
181
|
-
lim ios log
|
|
196
|
+
lim ios log com.example.myapp --lines 50
|
|
182
197
|
|
|
183
198
|
# Stream logs continuously (Ctrl+C to stop)
|
|
184
|
-
lim ios log
|
|
199
|
+
lim ios log com.example.myapp -f
|
|
185
200
|
```
|
|
186
201
|
|
|
187
202
|
#### Video Recording
|
|
188
203
|
|
|
189
204
|
```bash
|
|
190
|
-
lim ios record
|
|
191
|
-
lim ios record
|
|
192
|
-
lim ios record
|
|
205
|
+
lim ios record start
|
|
206
|
+
lim ios record start --quality 8
|
|
207
|
+
lim ios record stop -o recording.mp4
|
|
193
208
|
```
|
|
194
209
|
|
|
195
210
|
#### Xcode Integration
|
|
196
211
|
|
|
197
212
|
```bash
|
|
198
|
-
# Sync
|
|
199
|
-
lim ios sync
|
|
200
|
-
lim ios build
|
|
213
|
+
# Sync/build use the current directory if no path is provided; pass instance IDs with --id (requires --xcode on create)
|
|
214
|
+
lim ios sync ./MyProject
|
|
215
|
+
lim ios build --scheme MyApp --workspace MyApp.xcworkspace
|
|
201
216
|
```
|
|
202
217
|
|
|
203
218
|
---
|
|
@@ -237,34 +252,36 @@ lim android create --region us-west --display-name "CI Test" --label env=ci --rm
|
|
|
237
252
|
|
|
238
253
|
#### Device Interaction
|
|
239
254
|
|
|
255
|
+
All interaction commands accept an optional `[ID]` as the last argument. When omitted, the last created Android instance is used.
|
|
256
|
+
|
|
240
257
|
```bash
|
|
241
258
|
# Screenshots
|
|
242
|
-
lim android screenshot
|
|
259
|
+
lim android screenshot -o screenshot.png
|
|
243
260
|
|
|
244
261
|
# Tapping
|
|
245
|
-
lim android tap
|
|
246
|
-
lim android tap-element
|
|
247
|
-
lim android tap-element
|
|
262
|
+
lim android tap 100 200
|
|
263
|
+
lim android tap-element --resource-id com.example:id/button
|
|
264
|
+
lim android tap-element --text "Sign In"
|
|
248
265
|
|
|
249
266
|
# Text input
|
|
250
|
-
lim android type
|
|
251
|
-
lim android press-key
|
|
267
|
+
lim android type "Hello World"
|
|
268
|
+
lim android press-key enter
|
|
252
269
|
|
|
253
270
|
# Scrolling
|
|
254
|
-
lim android scroll
|
|
271
|
+
lim android scroll down --amount 500
|
|
255
272
|
|
|
256
273
|
# UI inspection
|
|
257
|
-
lim android element-tree
|
|
274
|
+
lim android element-tree
|
|
258
275
|
|
|
259
276
|
# Install app
|
|
260
|
-
lim android install-app
|
|
277
|
+
lim android install-app ./app.apk
|
|
261
278
|
|
|
262
279
|
# Open URL
|
|
263
|
-
lim android open-url
|
|
280
|
+
lim android open-url https://example.com
|
|
264
281
|
|
|
265
282
|
# Video recording
|
|
266
|
-
lim android record
|
|
267
|
-
lim android record
|
|
283
|
+
lim android record start
|
|
284
|
+
lim android record stop -o recording.mp4
|
|
268
285
|
```
|
|
269
286
|
|
|
270
287
|
#### ADB Tunnel
|
|
@@ -272,8 +289,8 @@ lim android record <ID> stop -o recording.mp4
|
|
|
272
289
|
Connect to a running Android instance for direct `adb` access:
|
|
273
290
|
|
|
274
291
|
```bash
|
|
275
|
-
lim android connect
|
|
276
|
-
lim android connect
|
|
292
|
+
lim android connect
|
|
293
|
+
lim android connect android_abc123 --adb-path /usr/local/bin/adb
|
|
277
294
|
```
|
|
278
295
|
|
|
279
296
|
The tunnel stays open until you press Ctrl+C. While connected, you can use `adb` commands in another terminal.
|
|
@@ -296,11 +313,11 @@ lim xcode delete <ID> # Delete an instance
|
|
|
296
313
|
lim xcode create --rm --region us-west --hard-timeout 1h
|
|
297
314
|
|
|
298
315
|
# Sync and build
|
|
299
|
-
lim xcode sync
|
|
300
|
-
lim xcode build
|
|
316
|
+
lim xcode sync ./MyProject
|
|
317
|
+
lim xcode build --scheme MyApp --workspace MyApp.xcworkspace
|
|
301
318
|
|
|
302
319
|
# Build and upload artifact
|
|
303
|
-
lim xcode build
|
|
320
|
+
lim xcode build --scheme MyApp --upload my-app-build
|
|
304
321
|
```
|
|
305
322
|
|
|
306
323
|
---
|
|
@@ -342,20 +359,20 @@ Sessions keep a persistent WebSocket connection to an instance in the background
|
|
|
342
359
|
Without a session, every command creates a new connection:
|
|
343
360
|
|
|
344
361
|
```
|
|
345
|
-
lim ios screenshot
|
|
346
|
-
lim ios tap
|
|
347
|
-
lim ios element-tree
|
|
362
|
+
lim ios screenshot # ~2s (connect + auth + screenshot + disconnect)
|
|
363
|
+
lim ios tap 100 200 # ~2s (connect + auth + tap + disconnect)
|
|
364
|
+
lim ios element-tree # ~2s (connect + auth + fetch + disconnect)
|
|
348
365
|
# Total: ~6s for 3 commands
|
|
349
366
|
```
|
|
350
367
|
|
|
351
368
|
With a session, the connection is created once and reused:
|
|
352
369
|
|
|
353
370
|
```
|
|
354
|
-
lim session start
|
|
355
|
-
lim ios screenshot
|
|
356
|
-
lim ios tap
|
|
357
|
-
lim ios element-tree
|
|
358
|
-
lim session stop
|
|
371
|
+
lim session start # ~2s (one-time connection setup)
|
|
372
|
+
lim ios screenshot # ~50ms (reuses connection)
|
|
373
|
+
lim ios tap 100 200 # ~50ms (reuses connection)
|
|
374
|
+
lim ios element-tree # ~50ms (reuses connection)
|
|
375
|
+
lim session stop # instant cleanup
|
|
359
376
|
# Total: ~2.15s for 3 commands
|
|
360
377
|
```
|
|
361
378
|
|
|
@@ -364,10 +381,15 @@ This makes sessions essential for interactive workflows, AI agent loops, and any
|
|
|
364
381
|
#### Session Commands
|
|
365
382
|
|
|
366
383
|
```bash
|
|
367
|
-
# Start
|
|
384
|
+
# Start a session (defaults to last created instance)
|
|
385
|
+
lim session start
|
|
386
|
+
|
|
387
|
+
# Or specify an instance explicitly
|
|
388
|
+
lim session start ios_abc123
|
|
389
|
+
|
|
390
|
+
# Multiple sessions can run simultaneously
|
|
368
391
|
lim session start ios_abc123
|
|
369
|
-
lim session start
|
|
370
|
-
lim session start android_ghi789
|
|
392
|
+
lim session start android_def456
|
|
371
393
|
|
|
372
394
|
# Check all active sessions
|
|
373
395
|
lim session status
|
|
@@ -384,7 +406,7 @@ If only one session is active, `lim session stop` (no ID) stops it automatically
|
|
|
384
406
|
|
|
385
407
|
#### How It Works
|
|
386
408
|
|
|
387
|
-
Each `lim session start
|
|
409
|
+
Each `lim session start` spawns an independent background daemon that:
|
|
388
410
|
- Holds a persistent WebSocket connection to that specific instance
|
|
389
411
|
- Listens on its own Unix socket at `/tmp/lim-sessions/<instance-id>/`
|
|
390
412
|
- All interaction commands automatically detect the matching session and route through it
|
|
@@ -394,17 +416,17 @@ Each `lim session start <ID>` spawns an independent background daemon that:
|
|
|
394
416
|
|
|
395
417
|
```bash
|
|
396
418
|
lim ios create --model iphone
|
|
397
|
-
lim session start
|
|
419
|
+
lim session start
|
|
398
420
|
|
|
399
421
|
# Fast interaction loop — each command takes ~50ms
|
|
400
|
-
lim ios launch-app
|
|
401
|
-
lim ios element-tree
|
|
402
|
-
lim ios tap-element
|
|
403
|
-
lim ios type
|
|
404
|
-
lim ios tap-element
|
|
405
|
-
lim ios screenshot
|
|
422
|
+
lim ios launch-app com.example.myapp
|
|
423
|
+
lim ios element-tree | jq '.tree'
|
|
424
|
+
lim ios tap-element --label "Login"
|
|
425
|
+
lim ios type "user@example.com"
|
|
426
|
+
lim ios tap-element --label "Submit"
|
|
427
|
+
lim ios screenshot -o after-login.png
|
|
406
428
|
|
|
407
|
-
lim session stop
|
|
429
|
+
lim session stop
|
|
408
430
|
lim ios delete ios_abc123
|
|
409
431
|
```
|
|
410
432
|
|
|
@@ -418,13 +440,13 @@ lim session start ios_phone_123
|
|
|
418
440
|
lim session start ios_tablet_456
|
|
419
441
|
|
|
420
442
|
# Agent controls both devices in parallel — ~50ms per command
|
|
421
|
-
lim ios launch-app
|
|
422
|
-
lim ios launch-app
|
|
443
|
+
lim ios launch-app com.example.myapp ios_phone_123
|
|
444
|
+
lim ios launch-app com.example.myapp ios_tablet_456
|
|
423
445
|
|
|
424
446
|
lim ios screenshot ios_phone_123 -o phone.png
|
|
425
447
|
lim ios screenshot ios_tablet_456 -o tablet.png
|
|
426
448
|
|
|
427
|
-
lim ios tap
|
|
449
|
+
lim ios tap 200 400 ios_phone_123
|
|
428
450
|
lim ios element-tree ios_tablet_456 --json > tablet-tree.json
|
|
429
451
|
|
|
430
452
|
# Clean up all sessions
|
|
@@ -448,7 +470,7 @@ done
|
|
|
448
470
|
|
|
449
471
|
# Run tests against all devices
|
|
450
472
|
for ID in "${IDS[@]}"; do
|
|
451
|
-
lim ios launch-app
|
|
473
|
+
lim ios launch-app com.example.myapp $ID
|
|
452
474
|
lim ios screenshot $ID -o "test_${ID}.png"
|
|
453
475
|
done
|
|
454
476
|
|
|
@@ -478,21 +500,21 @@ lim ios create --xcode
|
|
|
478
500
|
# (sandbox URL is cached locally for sync/build to use)
|
|
479
501
|
|
|
480
502
|
# 2. Sync your project code to the Xcode sandbox
|
|
481
|
-
lim ios sync
|
|
503
|
+
lim ios sync ./MyProject
|
|
482
504
|
|
|
483
505
|
# 3. Build — the app is auto-installed on the simulator
|
|
484
|
-
lim ios build
|
|
506
|
+
lim ios build --scheme MyApp --workspace MyApp.xcworkspace
|
|
485
507
|
|
|
486
508
|
# 4. Start a session for fast device interaction
|
|
487
|
-
lim session start
|
|
509
|
+
lim session start
|
|
488
510
|
|
|
489
511
|
# 5. Test the built app on the simulator (~50ms per command)
|
|
490
|
-
lim ios launch-app
|
|
491
|
-
lim ios element-tree
|
|
492
|
-
lim ios screenshot
|
|
512
|
+
lim ios launch-app com.example.myapp
|
|
513
|
+
lim ios element-tree | jq '.'
|
|
514
|
+
lim ios screenshot -o built-app.png
|
|
493
515
|
|
|
494
516
|
# 6. Clean up
|
|
495
|
-
lim session stop
|
|
517
|
+
lim session stop
|
|
496
518
|
lim ios delete ios_abc123
|
|
497
519
|
```
|
|
498
520
|
|
|
@@ -507,11 +529,11 @@ Use this when you only need to build (no simulator needed), or when you want to
|
|
|
507
529
|
lim xcode create --rm
|
|
508
530
|
|
|
509
531
|
# 2. Sync and build
|
|
510
|
-
lim xcode sync
|
|
511
|
-
lim xcode build
|
|
532
|
+
lim xcode sync ./MyProject
|
|
533
|
+
lim xcode build --scheme MyApp --workspace MyApp.xcworkspace
|
|
512
534
|
|
|
513
535
|
# 3. Upload build artifact
|
|
514
|
-
lim xcode build
|
|
536
|
+
lim xcode build --scheme MyApp --upload my-app-build
|
|
515
537
|
|
|
516
538
|
# 4. Download the artifact
|
|
517
539
|
lim asset pull my-app-build -o ./build-output
|
|
@@ -520,14 +542,20 @@ lim asset pull my-app-build -o ./build-output
|
|
|
520
542
|
#### Sync Options
|
|
521
543
|
|
|
522
544
|
```bash
|
|
523
|
-
#
|
|
524
|
-
lim ios sync
|
|
545
|
+
# Sync the current directory
|
|
546
|
+
lim ios sync
|
|
525
547
|
|
|
526
|
-
#
|
|
527
|
-
lim ios sync
|
|
548
|
+
# Watch mode (re-syncs on file changes)
|
|
549
|
+
lim ios sync ./MyProject --watch
|
|
550
|
+
|
|
551
|
+
# One-shot sync (default)
|
|
552
|
+
lim ios sync ./MyProject
|
|
553
|
+
|
|
554
|
+
# Explicitly disable watch mode
|
|
555
|
+
lim ios sync ./MyProject --no-watch
|
|
528
556
|
|
|
529
557
|
# Sync without installing
|
|
530
|
-
lim ios sync
|
|
558
|
+
lim ios sync ./MyProject --no-install
|
|
531
559
|
```
|
|
532
560
|
|
|
533
561
|
The sync automatically ignores build artifacts (`build/`, `DerivedData/`, `.build/`), dependency folders (`Pods/`, `Carthage/Build/`, `.swiftpm/`), and user-specific files (`xcuserdata/`, `.dSYM/`).
|
|
@@ -565,7 +593,7 @@ lim android list --json | jq '.[].metadata.id'
|
|
|
565
593
|
|
|
566
594
|
# Use in scripts
|
|
567
595
|
INSTANCE_ID=$(lim ios create --json | jq -r '.metadata.id')
|
|
568
|
-
lim ios screenshot
|
|
596
|
+
lim ios screenshot -o test.png
|
|
569
597
|
lim delete $INSTANCE_ID
|
|
570
598
|
```
|
|
571
599
|
|
|
@@ -576,21 +604,19 @@ lim delete $INSTANCE_ID
|
|
|
576
604
|
### CI Testing: Install and Verify an App
|
|
577
605
|
|
|
578
606
|
```bash
|
|
579
|
-
INSTANCE_ID="ios_..."
|
|
580
|
-
|
|
581
607
|
# Create instance and start session for fast commands
|
|
582
608
|
lim ios create --install ./build/MyApp.ipa
|
|
583
|
-
lim session start
|
|
609
|
+
lim session start
|
|
584
610
|
|
|
585
611
|
# Verify — each command takes ~50ms with session
|
|
586
|
-
lim ios launch-app
|
|
612
|
+
lim ios launch-app com.example.myapp
|
|
587
613
|
sleep 2
|
|
588
|
-
lim ios element-tree
|
|
589
|
-
lim ios screenshot
|
|
614
|
+
lim ios element-tree | grep "Welcome"
|
|
615
|
+
lim ios screenshot -o test-result.png
|
|
590
616
|
|
|
591
617
|
# Clean up
|
|
592
|
-
lim session stop
|
|
593
|
-
lim delete
|
|
618
|
+
lim session stop
|
|
619
|
+
lim delete ios_abc123
|
|
594
620
|
```
|
|
595
621
|
|
|
596
622
|
### AI Agent Automation
|
|
@@ -601,20 +627,20 @@ INSTANCE=$(lim ios create --model iphone --json)
|
|
|
601
627
|
ID=$(echo $INSTANCE | jq -r '.metadata.id')
|
|
602
628
|
|
|
603
629
|
# Start session — all commands now run in ~50ms
|
|
604
|
-
lim session start
|
|
630
|
+
lim session start
|
|
605
631
|
|
|
606
632
|
# Agent can interact at high speed
|
|
607
|
-
lim ios tap
|
|
608
|
-
lim ios type
|
|
609
|
-
lim ios tap-element
|
|
610
|
-
lim ios screenshot
|
|
611
|
-
lim ios element-tree
|
|
633
|
+
lim ios tap 200 400
|
|
634
|
+
lim ios type "test@example.com"
|
|
635
|
+
lim ios tap-element --label "Sign In"
|
|
636
|
+
lim ios screenshot -o result.png
|
|
637
|
+
lim ios element-tree --json > ui-state.json
|
|
612
638
|
|
|
613
639
|
# Tail logs (non-streaming works through session too)
|
|
614
|
-
lim ios log
|
|
640
|
+
lim ios log com.example.myapp --lines 20
|
|
615
641
|
|
|
616
642
|
# Clean up
|
|
617
|
-
lim session stop
|
|
643
|
+
lim session stop
|
|
618
644
|
lim delete $ID
|
|
619
645
|
```
|
|
620
646
|
|
|
@@ -625,15 +651,15 @@ lim delete $ID
|
|
|
625
651
|
ID=$(lim ios create --xcode --json | jq -r '.metadata.id')
|
|
626
652
|
|
|
627
653
|
# Sync, build, and test
|
|
628
|
-
lim ios sync
|
|
629
|
-
lim ios build
|
|
654
|
+
lim ios sync ./MyiOSProject
|
|
655
|
+
lim ios build --scheme MyApp --workspace MyApp.xcworkspace
|
|
630
656
|
|
|
631
657
|
# Verify the built app on the simulator
|
|
632
|
-
lim session start
|
|
633
|
-
lim ios launch-app
|
|
658
|
+
lim session start
|
|
659
|
+
lim ios launch-app com.example.myapp
|
|
634
660
|
sleep 2
|
|
635
|
-
lim ios element-tree
|
|
636
|
-
lim ios screenshot
|
|
661
|
+
lim ios element-tree | grep "Welcome"
|
|
662
|
+
lim ios screenshot -o test-result.png
|
|
637
663
|
lim session stop
|
|
638
664
|
|
|
639
665
|
lim delete $ID
|
|
@@ -643,10 +669,9 @@ lim delete $ID
|
|
|
643
669
|
|
|
644
670
|
```bash
|
|
645
671
|
lim xcode create --rm --reuse-if-exists --label project=myapp
|
|
646
|
-
XCODE_ID="xcode_..."
|
|
647
672
|
|
|
648
|
-
lim xcode sync
|
|
649
|
-
lim xcode build
|
|
673
|
+
lim xcode sync ./MyiOSProject
|
|
674
|
+
lim xcode build --scheme MyApp --workspace MyApp.xcworkspace --upload myapp-latest
|
|
650
675
|
lim asset pull myapp-latest -o ./build-output
|
|
651
676
|
```
|
|
652
677
|
|
package/dist/base-command.d.ts
CHANGED
|
@@ -13,5 +13,10 @@ export declare abstract class BaseCommand extends Command {
|
|
|
13
13
|
protected withAuth<T>(fn: () => Promise<T>): Promise<T>;
|
|
14
14
|
protected outputTable(headers: string[], rows: string[][]): void;
|
|
15
15
|
protected outputJson(data: unknown): void;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve an instance ID from args, falling back to the last-used instance.
|
|
18
|
+
* Infers expected type from the command alias (e.g. "ios screenshot" -> "ios").
|
|
19
|
+
*/
|
|
20
|
+
protected resolveId(providedId: string | undefined): string;
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=base-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAC7C,OAAO,MAA+B,MAAM,aAAa,CAAC;AAO1D,8BAAsB,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,SAAS;;;MASd;IAEF,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,SAAS,KAAK,MAAM,IAAI,MAAM,CAc7B;IAED,OAAO,CAAC,YAAY,CAAC,CAA0B;IAE/C,SAAS,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/D;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cAI9C,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB7D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;IAgBhE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAC7C,OAAO,MAA+B,MAAM,aAAa,CAAC;AAO1D,8BAAsB,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,SAAS;;;MASd;IAEF,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,SAAS,KAAK,MAAM,IAAI,MAAM,CAc7B;IAED,OAAO,CAAC,YAAY,CAAC,CAA0B;IAE/C,SAAS,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/D;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;cAI9C,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB7D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;IAgBhE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIzC;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;CAO5D"}
|
package/dist/base-command.js
CHANGED
|
@@ -96,6 +96,17 @@ class BaseCommand extends core_1.Command {
|
|
|
96
96
|
outputJson(data) {
|
|
97
97
|
this.log(JSON.stringify(data, null, 2));
|
|
98
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Resolve an instance ID from args, falling back to the last-used instance.
|
|
101
|
+
* Infers expected type from the command alias (e.g. "ios screenshot" -> "ios").
|
|
102
|
+
*/
|
|
103
|
+
resolveId(providedId) {
|
|
104
|
+
const commandId = this.id ?? '';
|
|
105
|
+
const parts = commandId.split(' ');
|
|
106
|
+
const noun = parts[0];
|
|
107
|
+
const expectedType = ['ios', 'android', 'xcode'].includes(noun) ? noun : undefined;
|
|
108
|
+
return (0, config_1.resolveInstanceId)(providedId, expectedType);
|
|
109
|
+
}
|
|
99
110
|
}
|
|
100
111
|
exports.BaseCommand = BaseCommand;
|
|
101
112
|
BaseCommand.baseFlags = {
|
package/dist/base-command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAA6C;AAC7C,mDAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ export default class AndroidConnect extends BaseCommand {
|
|
|
4
4
|
static aliases: string[];
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static args: {
|
|
7
|
-
id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
id: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
10
10
|
'adb-path': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/commands/android/connect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAA4D;IAC1E,MAAM,CAAC,OAAO,WAAuB;IACrC,MAAM,CAAC,QAAQ,WAA8C;IAE7D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/commands/android/connect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAA4D;IAC1E,MAAM,CAAC,OAAO,WAAuB;IACrC,MAAM,CAAC,QAAQ,WAA8C;IAE7D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
|
|
@@ -40,9 +40,10 @@ class AndroidConnect extends base_command_1.BaseCommand {
|
|
|
40
40
|
const { args, flags } = await this.parse(AndroidConnect);
|
|
41
41
|
this.setParsedFlags(flags);
|
|
42
42
|
await this.withAuth(async () => {
|
|
43
|
-
const
|
|
43
|
+
const id = this.resolveId(args.id);
|
|
44
|
+
const instance = await this.client.androidInstances.get(id);
|
|
44
45
|
if (!instance.status.apiUrl) {
|
|
45
|
-
this.error(`Instance ${
|
|
46
|
+
this.error(`Instance ${id} does not have an apiUrl. Is it ready?`);
|
|
46
47
|
}
|
|
47
48
|
const { createInstanceClient } = await Promise.resolve().then(() => __importStar(require('@limrun/api')));
|
|
48
49
|
const instanceClient = await createInstanceClient({
|
|
@@ -71,7 +72,7 @@ AndroidConnect.summary = 'Connect to an existing Android instance via ADB tunnel
|
|
|
71
72
|
AndroidConnect.aliases = ['connect android'];
|
|
72
73
|
AndroidConnect.examples = ['<%= config.bin %> android connect <ID>'];
|
|
73
74
|
AndroidConnect.args = {
|
|
74
|
-
id: core_1.Args.string({ description: 'Android instance ID', required:
|
|
75
|
+
id: core_1.Args.string({ description: 'Android instance ID (defaults to last created)', required: false }),
|
|
75
76
|
};
|
|
76
77
|
AndroidConnect.flags = {
|
|
77
78
|
...base_command_1.BaseCommand.baseFlags,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/commands/android/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAA0C;AAC1C,qDAAiD;AAEjD,MAAqB,cAAe,SAAQ,0BAAW;IAcrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/commands/android/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAA0C;AAC1C,qDAAiD;AAEjD,MAAqB,cAAe,SAAQ,0BAAW;IAcrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,wCAAwC,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC;gBAChD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;gBAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe;gBACvC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YAElD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACpB,aAAa,CAAC,SAAS,CAAC,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC/B,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;;AAhDM,sBAAO,GAAG,wDAAwD,CAAC;AACnE,sBAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC9B,uBAAQ,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAEtD,mBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;CACpG,CAAC;AAEK,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;CAChF,CAAC;kBAZiB,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAAmC;IACjD,MAAM,CAAC,WAAW,SACkF;IACpG,MAAM,CAAC,OAAO,WAAmB;IAEjC,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;MAwBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8G3B"}
|
|
@@ -41,6 +41,7 @@ const child_process_1 = require("child_process");
|
|
|
41
41
|
const core_1 = require("@oclif/core");
|
|
42
42
|
const base_command_1 = require("../../base-command");
|
|
43
43
|
const formatting_1 = require("../../lib/formatting");
|
|
44
|
+
const config_1 = require("../../lib/config");
|
|
44
45
|
class AndroidCreate extends base_command_1.BaseCommand {
|
|
45
46
|
async run() {
|
|
46
47
|
const { flags } = await this.parse(AndroidCreate);
|
|
@@ -87,6 +88,7 @@ class AndroidCreate extends base_command_1.BaseCommand {
|
|
|
87
88
|
}
|
|
88
89
|
const start = Date.now();
|
|
89
90
|
const instance = await this.client.androidInstances.create(params);
|
|
91
|
+
(0, config_1.saveLastInstanceId)(instance.metadata.id);
|
|
90
92
|
this.log(`Created a new instance in ${((Date.now() - start) / 1000).toFixed(1)}s`);
|
|
91
93
|
if (flags.rm) {
|
|
92
94
|
const cleanup = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,iDAAsC;AACtC,sCAAoC;AACpC,qDAAiD;AACjD,qDAAmD;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/build.d.ts
CHANGED
|
@@ -5,9 +5,10 @@ export default class Build extends BaseCommand {
|
|
|
5
5
|
static description: string;
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static args: {
|
|
8
|
-
|
|
8
|
+
path: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
9
9
|
};
|
|
10
10
|
static flags: {
|
|
11
|
+
id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
12
|
scheme: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
13
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
14
|
project: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|