lim 0.29.0 → 0.29.2

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 (57) hide show
  1. package/README.md +9 -4
  2. package/dist/commands/android/adb-shell.d.ts +19 -0
  3. package/dist/commands/android/adb-shell.d.ts.map +1 -0
  4. package/dist/commands/android/adb-shell.js +68 -0
  5. package/dist/commands/android/adb-shell.js.map +1 -0
  6. package/dist/commands/android/camera.d.ts +22 -0
  7. package/dist/commands/android/camera.d.ts.map +1 -0
  8. package/dist/commands/android/camera.js +83 -0
  9. package/dist/commands/android/camera.js.map +1 -0
  10. package/dist/commands/android/create.d.ts +2 -0
  11. package/dist/commands/android/create.d.ts.map +1 -1
  12. package/dist/commands/android/create.js +29 -6
  13. package/dist/commands/android/create.js.map +1 -1
  14. package/dist/commands/android/pull-file.d.ts +21 -0
  15. package/dist/commands/android/pull-file.d.ts.map +1 -0
  16. package/dist/commands/android/pull-file.js +67 -0
  17. package/dist/commands/android/pull-file.js.map +1 -0
  18. package/dist/commands/android/push-file.d.ts +21 -0
  19. package/dist/commands/android/push-file.d.ts.map +1 -0
  20. package/dist/commands/android/push-file.js +64 -0
  21. package/dist/commands/android/push-file.js.map +1 -0
  22. package/dist/commands/ios/create.d.ts +1 -0
  23. package/dist/commands/ios/create.d.ts.map +1 -1
  24. package/dist/commands/ios/create.js +20 -5
  25. package/dist/commands/ios/create.js.map +1 -1
  26. package/dist/commands/ios/tunnel/index.d.ts +29 -0
  27. package/dist/commands/ios/tunnel/index.d.ts.map +1 -0
  28. package/dist/commands/ios/tunnel/index.js +302 -0
  29. package/dist/commands/ios/tunnel/index.js.map +1 -0
  30. package/dist/commands/ios/tunnel/status.d.ts +17 -0
  31. package/dist/commands/ios/tunnel/status.d.ts.map +1 -0
  32. package/dist/commands/ios/tunnel/status.js +79 -0
  33. package/dist/commands/ios/tunnel/status.js.map +1 -0
  34. package/dist/commands/ios/tunnel/stop.d.ts +21 -0
  35. package/dist/commands/ios/tunnel/stop.d.ts.map +1 -0
  36. package/dist/commands/ios/tunnel/stop.js +148 -0
  37. package/dist/commands/ios/tunnel/stop.js.map +1 -0
  38. package/dist/commands/xcode/build.d.ts +2 -0
  39. package/dist/commands/xcode/build.d.ts.map +1 -1
  40. package/dist/commands/xcode/build.js +47 -2
  41. package/dist/commands/xcode/build.js.map +1 -1
  42. package/dist/commands/xcode/run.d.ts.map +1 -1
  43. package/dist/commands/xcode/run.js +10 -18
  44. package/dist/commands/xcode/run.js.map +1 -1
  45. package/dist/lib/env-entries.d.ts +9 -0
  46. package/dist/lib/env-entries.d.ts.map +1 -0
  47. package/dist/lib/env-entries.js +26 -0
  48. package/dist/lib/env-entries.js.map +1 -0
  49. package/dist/lib/ios-tunnel-process.d.ts +70 -0
  50. package/dist/lib/ios-tunnel-process.d.ts.map +1 -0
  51. package/dist/lib/ios-tunnel-process.js +502 -0
  52. package/dist/lib/ios-tunnel-process.js.map +1 -0
  53. package/dist/lib/ios-tunnel-process.test.d.ts +2 -0
  54. package/dist/lib/ios-tunnel-process.test.d.ts.map +1 -0
  55. package/dist/lib/ios-tunnel-process.test.js +339 -0
  56. package/dist/lib/ios-tunnel-process.test.js.map +1 -0
  57. package/package.json +3 -3
package/README.md CHANGED
@@ -180,6 +180,7 @@ lim ios create --region us-west --display-name "CI Test" --label env=ci --rm
180
180
  | `--reuse-if-exists` | Reuse an existing instance with matching labels/region |
181
181
  | `--install <file>` | Local file to install (auto-uploads, repeatable) |
182
182
  | `--install-asset <name>` | Asset name to install (repeatable) |
183
+ | `--install-url <url>` | Signed download URL of an app to install (repeatable) |
183
184
 
184
185
  #### List and Filter
185
186
 
@@ -367,6 +368,9 @@ lim android create
367
368
  # With apps pre-installed
368
369
  lim android create --install ./my-app.apk --install ./another.apk
369
370
 
371
+ # With a specific Android OS version
372
+ lim android create --os-version 15
373
+
370
374
  # Create without opening an ADB tunnel
371
375
  lim android create --no-connect
372
376
 
@@ -376,10 +380,11 @@ lim android create --region us-west --display-name "CI Test" --label env=ci --rm
376
380
 
377
381
  **Android-specific flags:**
378
382
 
379
- | Flag | Description |
380
- | ------------------- | ----------------------------------------------- |
381
- | `--[no-]connect` | Start an ADB tunnel immediately (default: true) |
382
- | `--adb-path <path>` | Path to `adb` binary (default: `adb`) |
383
+ | Flag | Description |
384
+ | ------------------------ | ----------------------------------------------- |
385
+ | `--os-version <version>` | Android OS major version (14 or 15) |
386
+ | `--[no-]connect` | Start an ADB tunnel immediately (default: true) |
387
+ | `--adb-path <path>` | Path to `adb` binary (default: `adb`) |
383
388
 
384
389
  `lim android create` always prints a Console URL such as `https://console.limrun.com/stream/android_...` that you can open in the browser for live viewing. For automation, `--no-connect` is usually the safest default.
385
390
 
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class AndroidAdbShell extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static strict: boolean;
6
+ static examples: string[];
7
+ static flags: {
8
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ timeout: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
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
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=adb-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adb-shell.d.ts","sourceRoot":"","sources":["../../../src/commands/android/adb-shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAAwE;IACtF,MAAM,CAAC,WAAW,SAKwD;IAG1E,MAAM,CAAC,MAAM,UAAS;IAEtB,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
@@ -0,0 +1,68 @@
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 AndroidAdbShell extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { argv, flags } = await this.parse(AndroidAdbShell);
9
+ this.setParsedFlags(flags);
10
+ const tokens = argv;
11
+ if (tokens.length === 0) {
12
+ this.error('Provide a command after `--`, e.g. `android adb-shell -- pm list packages -3`.');
13
+ }
14
+ const [command, ...args] = tokens;
15
+ await this.withAuth(async () => {
16
+ const resolvedInstance = this.resolveAndroidInstance(flags.id);
17
+ const { client, disconnect } = await (0, instance_client_factory_1.getAndroidInstanceClient)(this.client, resolvedInstance);
18
+ try {
19
+ const result = await client.adbShell(command, args, { timeoutMs: flags.timeout });
20
+ if (flags.json) {
21
+ this.outputJson(result);
22
+ }
23
+ else {
24
+ if (result.stdout) {
25
+ process.stdout.write(result.stdout);
26
+ }
27
+ if (result.stderr) {
28
+ process.stderr.write(result.stderr);
29
+ }
30
+ if (result.truncated) {
31
+ process.stderr.write('\n[output truncated]\n');
32
+ }
33
+ }
34
+ if (result.exitCode !== 0) {
35
+ this.exit(result.exitCode);
36
+ }
37
+ }
38
+ finally {
39
+ disconnect();
40
+ }
41
+ });
42
+ }
43
+ }
44
+ AndroidAdbShell.summary = 'Run a shell command on a running Android instance (like adb shell)';
45
+ AndroidAdbShell.description = 'Run a command on the Android instance without needing adb installed locally. ' +
46
+ 'The command runs with the same permissions the adb shell user has, and its stdout, stderr, ' +
47
+ 'and exit code are returned. Pass the command and its arguments after `--`; each argument is ' +
48
+ 'sent as a separate, quoted token. To use shell features like pipes, invoke a shell explicitly ' +
49
+ '(e.g. `-- sh -c "..."`). The CLI exits with the command\'s exit code.';
50
+ // Everything after `--` is captured verbatim as the command and its args.
51
+ AndroidAdbShell.strict = false;
52
+ AndroidAdbShell.examples = [
53
+ '<%= config.bin %> android adb-shell -- pm list packages -3',
54
+ '<%= config.bin %> android adb-shell -- getprop ro.build.version.sdk',
55
+ '<%= config.bin %> android adb-shell --id <instance-ID> -- sh -c "dumpsys battery | grep level"',
56
+ ];
57
+ AndroidAdbShell.flags = {
58
+ ...base_command_1.BaseCommand.baseFlags,
59
+ id: core_1.Flags.string({
60
+ description: 'Android instance ID to target. Defaults to the last created Android instance.',
61
+ }),
62
+ timeout: core_1.Flags.integer({
63
+ description: 'Command timeout in milliseconds.',
64
+ default: 30000,
65
+ }),
66
+ };
67
+ exports.default = AndroidAdbShell;
68
+ //# sourceMappingURL=adb-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adb-shell.js","sourceRoot":"","sources":["../../../src/commands/android/adb-shell.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,+EAA6E;AAE7E,MAAqB,eAAgB,SAAQ,0BAAW;IA6BtD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAgB,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,kDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC7F,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClF,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACtC,CAAC;oBACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACtC,CAAC;oBACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA/DM,uBAAO,GAAG,oEAAoE,CAAC;AAC/E,2BAAW,GAChB,+EAA+E;IAC/E,6FAA6F;IAC7F,8FAA8F;IAC9F,gGAAgG;IAChG,uEAAuE,CAAC;AAE1E,0EAA0E;AACnE,sBAAM,GAAG,KAAK,CAAC;AAEf,wBAAQ,GAAG;IAChB,4DAA4D;IAC5D,qEAAqE;IACrE,gGAAgG;CACjG,CAAC;AAEK,qBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,+EAA+E;KAC7F,CAAC;IACF,OAAO,EAAE,YAAK,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;kBA3BiB,eAAe"}
@@ -0,0 +1,22 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class AndroidCamera extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ action: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ path: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ loop: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
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
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
19
+ };
20
+ run(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/commands/android/camera.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAA8D;IAC5E,MAAM,CAAC,WAAW,SAI+C;IACjE,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;;MAWT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAUV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsC3B"}
@@ -0,0 +1,83 @@
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 AndroidCamera extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(AndroidCamera);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ const resolvedInstance = this.resolveAndroidInstance(flags.id);
17
+ const { client, disconnect } = await (0, instance_client_factory_1.getAndroidInstanceClient)(this.client, resolvedInstance);
18
+ try {
19
+ if (args.action === 'clear') {
20
+ await client.clearCameraVideo();
21
+ if (flags.json) {
22
+ this.outputJson({ ok: true });
23
+ }
24
+ else {
25
+ this.output('Camera restored to the default source.');
26
+ }
27
+ return;
28
+ }
29
+ if (!args.path) {
30
+ this.error('The `play` action requires a video file path.');
31
+ }
32
+ const localPath = path_1.default.resolve(args.path);
33
+ if (!fs_1.default.existsSync(localPath)) {
34
+ this.error(`File not found: ${localPath}`);
35
+ }
36
+ await client.setCameraVideo(localPath, { loop: flags.loop });
37
+ if (flags.json) {
38
+ this.outputJson({ ok: true, loop: flags.loop });
39
+ }
40
+ else {
41
+ this.output(`Playing ${localPath} as the camera${flags.loop ? ' on loop' : ' once'}.`);
42
+ }
43
+ }
44
+ finally {
45
+ disconnect();
46
+ }
47
+ });
48
+ }
49
+ }
50
+ AndroidCamera.summary = 'Control the virtual camera of a running Android instance';
51
+ AndroidCamera.description = 'Upload a local video file and play it as the camera feed of a running Android instance, replacing the live browser camera. ' +
52
+ "Apps see the video through their regular Camera2/CameraX pipeline, and the file's audio track (if any) plays through the microphone in sync. " +
53
+ 'By default the video loops; with --no-loop it plays once and the feed freezes on the last frame. ' +
54
+ 'Use the `clear` action to restore the default camera source.';
55
+ AndroidCamera.examples = [
56
+ '<%= config.bin %> android camera play ./fixtures/qr-scan.mp4',
57
+ '<%= config.bin %> android camera play ./clip.mp4 --no-loop --id <instance-ID>',
58
+ '<%= config.bin %> android camera clear',
59
+ ];
60
+ AndroidCamera.args = {
61
+ action: core_1.Args.string({
62
+ description: 'Camera action: `play` plays a video file as the camera and `clear` restores the default camera',
63
+ required: true,
64
+ options: ['play', 'clear'],
65
+ }),
66
+ path: core_1.Args.string({
67
+ description: 'Local video file to play as the camera (required for the `play` action).',
68
+ required: false,
69
+ }),
70
+ };
71
+ AndroidCamera.flags = {
72
+ ...base_command_1.BaseCommand.baseFlags,
73
+ id: core_1.Flags.string({
74
+ description: 'Android instance ID to target. Defaults to the last created Android instance.',
75
+ }),
76
+ loop: core_1.Flags.boolean({
77
+ description: 'Restart the video when it ends. Use --no-loop to play once and freeze on the last frame.',
78
+ default: true,
79
+ allowNo: true,
80
+ }),
81
+ };
82
+ exports.default = AndroidCamera;
83
+ //# sourceMappingURL=camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/commands/android/camera.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,13 @@ export default class AndroidCreate extends BaseCommand {
11
11
  'display-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  region: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
13
  jurisdiction: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'os-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
15
  'hard-timeout': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
16
  'inactivity-timeout': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
17
  label: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
18
  'reuse-if-exists': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
19
  'install-asset': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
+ 'install-url': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
21
  install: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
22
  'asset-ttl': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
23
  open: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -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;AAMjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAAmC;IACjD,MAAM,CAAC,WAAW,SAC+J;IAEjL,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;MA+DV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0J3B"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAAmC;IACjD,MAAM,CAAC,WAAW,SAC+J;IAEjL,MAAM,CAAC,QAAQ,WAQb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;MAsEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwK3B"}
@@ -51,8 +51,10 @@ class AndroidCreate extends base_command_1.BaseCommand {
51
51
  }
52
52
  this.setParsedFlags(flags);
53
53
  await this.withAuth(async () => {
54
- // Upload local files first
55
- const assetNames = [...(flags['install-asset'] || [])];
54
+ // Upload local files first. Uploaded files are installed via their
55
+ // signed download URL so the instance can fetch them directly without
56
+ // a server-side name lookup.
57
+ const uploadedAssetUrls = [];
56
58
  if (flags.install) {
57
59
  for (const filePath of flags.install) {
58
60
  const resolved = path_1.default.resolve(filePath);
@@ -63,7 +65,7 @@ class AndroidCreate extends base_command_1.BaseCommand {
63
65
  name,
64
66
  ttl: flags['asset-ttl'],
65
67
  });
66
- assetNames.push(asset.name);
68
+ uploadedAssetUrls.push(asset.signedDownloadUrl);
67
69
  }
68
70
  this.info(`Successfully uploaded ${flags.install.length} file(s)`);
69
71
  }
@@ -73,18 +75,30 @@ class AndroidCreate extends base_command_1.BaseCommand {
73
75
  reuseIfExists: flags['reuse-if-exists'] || undefined,
74
76
  spec: {},
75
77
  };
76
- if (assetNames.length > 0) {
77
- params.spec.initialAssets = assetNames.map((name) => ({
78
+ const initialAssets = [
79
+ ...(flags['install-asset'] || []).map((name) => ({
78
80
  kind: 'App',
79
81
  source: 'AssetName',
80
82
  assetName: name,
81
83
  launchMode: 'RelaunchIfRunning',
82
- }));
84
+ })),
85
+ ...[...(flags['install-url'] || []), ...uploadedAssetUrls].map((url) => ({
86
+ kind: 'App',
87
+ source: 'URL',
88
+ url,
89
+ launchMode: 'RelaunchIfRunning',
90
+ })),
91
+ ];
92
+ if (initialAssets.length > 0) {
93
+ params.spec.initialAssets = initialAssets;
83
94
  }
84
95
  if (flags.region)
85
96
  params.spec.region = flags.region;
86
97
  if (flags.jurisdiction)
87
98
  params.spec.jurisdiction = flags.jurisdiction;
99
+ if (flags['os-version']) {
100
+ params.spec.clues = [{ kind: 'OSVersion', osVersion: flags['os-version'] }];
101
+ }
88
102
  if (flags['hard-timeout'])
89
103
  params.spec.hardTimeout = flags['hard-timeout'];
90
104
  if (flags['inactivity-timeout'])
@@ -196,6 +210,8 @@ AndroidCreate.description = 'Create a new cloud Android instance and optionally
196
210
  AndroidCreate.examples = [
197
211
  '<%= config.bin %> android create',
198
212
  '<%= config.bin %> android create --rm --install ./app.apk',
213
+ '<%= config.bin %> android create --install-url https://example.t3.storage.dev/app.apk?...',
214
+ '<%= config.bin %> android create --os-version 15',
199
215
  '<%= config.bin %> android create --jurisdiction us --label env=dev',
200
216
  '<%= config.bin %> android create --no-connect',
201
217
  '<%= config.bin %> android create --daemon=false',
@@ -230,6 +246,9 @@ AndroidCreate.flags = {
230
246
  description: 'Jurisdiction the instance must be created in. Unlike --region, this is a hard constraint: creation fails when no region in the jurisdiction has capacity.',
231
247
  options: ['us', 'eu', 'as'],
232
248
  }),
249
+ 'os-version': core_1.Flags.string({
250
+ description: 'Android OS major version to create (14 or 15)',
251
+ }),
233
252
  'hard-timeout': core_1.Flags.string({ description: 'Hard timeout (e.g. 1m, 10m, 3h). Default: no timeout' }),
234
253
  'inactivity-timeout': core_1.Flags.string({
235
254
  description: 'Inactivity timeout (e.g. 1m, 10m, 3h). Default is in organization settings.',
@@ -246,6 +265,10 @@ AndroidCreate.flags = {
246
265
  description: 'Existing asset name to install after creation. Repeat for multiple assets.',
247
266
  multiple: true,
248
267
  }),
268
+ 'install-url': core_1.Flags.string({
269
+ description: 'Signed download URL of an app to install after creation. Repeat for multiple URLs.',
270
+ multiple: true,
271
+ }),
249
272
  install: core_1.Flags.string({
250
273
  description: 'Local app file to upload and install automatically after creation. Repeat for multiple files.',
251
274
  multiple: true,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/android/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class AndroidPullFile extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ path: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ destination: import("@oclif/core/lib/interfaces").Arg<string | undefined, 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
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=pull-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-file.d.ts","sourceRoot":"","sources":["../../../src/commands/android/pull-file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAAiD;IAC/D,MAAM,CAAC,WAAW,SAGqD;IAEvE,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;;MAWT;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
@@ -0,0 +1,67 @@
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 AndroidPullFile extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(AndroidPullFile);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ let localPath = path_1.default.resolve(args.destination ?? path_1.default.posix.basename(args.path));
17
+ // adb pull semantics: an existing directory destination (e.g. `.`)
18
+ // receives the file under its remote basename.
19
+ if (fs_1.default.existsSync(localPath) && fs_1.default.statSync(localPath).isDirectory()) {
20
+ localPath = path_1.default.join(localPath, path_1.default.posix.basename(args.path));
21
+ }
22
+ const resolvedInstance = this.resolveAndroidInstance(flags.id);
23
+ const { client, disconnect } = await (0, instance_client_factory_1.getAndroidInstanceClient)(this.client, resolvedInstance);
24
+ try {
25
+ // Streamed to disk by the SDK, so large files never sit in memory.
26
+ await client.pullFile(args.path, localPath);
27
+ if (flags.json) {
28
+ this.outputJson({ localPath, bytes: fs_1.default.statSync(localPath).size });
29
+ }
30
+ else {
31
+ this.output(localPath);
32
+ }
33
+ }
34
+ finally {
35
+ disconnect();
36
+ }
37
+ });
38
+ }
39
+ }
40
+ AndroidPullFile.summary = 'Pull a file from a running Android instance';
41
+ AndroidPullFile.description = 'Download a file from the Android instance without an ADB connection and save it locally. ' +
42
+ 'This behaves like `adb pull`: the read happens with the same permissions the ADB shell user has, ' +
43
+ 'so protected locations are rejected just as they would be for adb.';
44
+ AndroidPullFile.examples = [
45
+ '<%= config.bin %> android pull-file /sdcard/Download/photo.jpeg',
46
+ '<%= config.bin %> android pull-file /data/local/tmp/log.txt ./device-log.txt',
47
+ '<%= config.bin %> android pull-file /sdcard/Download/photo.jpeg ./photo.jpeg --id <instance-ID>',
48
+ ];
49
+ AndroidPullFile.args = {
50
+ path: core_1.Args.string({
51
+ description: 'Absolute path of the file on the instance, like the adb pull source.',
52
+ required: true,
53
+ }),
54
+ destination: core_1.Args.string({
55
+ description: 'Local path to save the file to. An existing directory saves the remote filename inside it, ' +
56
+ 'like adb pull. Defaults to the remote filename in the current directory.',
57
+ required: false,
58
+ }),
59
+ };
60
+ AndroidPullFile.flags = {
61
+ ...base_command_1.BaseCommand.baseFlags,
62
+ id: core_1.Flags.string({
63
+ description: 'Android instance ID to target. Defaults to the last created Android instance.',
64
+ }),
65
+ };
66
+ exports.default = AndroidPullFile;
67
+ //# sourceMappingURL=pull-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-file.js","sourceRoot":"","sources":["../../../src/commands/android/pull-file.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,sCAA0C;AAC1C,qDAAiD;AACjD,+EAA6E;AAE7E,MAAqB,eAAgB,SAAQ,0BAAW;IAiCtD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,IAAI,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,mEAAmE;YACnE,+CAA+C;YAC/C,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrE,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,kDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC7F,IAAI,CAAC;gBACH,mEAAmE;gBACnE,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA1DM,uBAAO,GAAG,6CAA6C,CAAC;AACxD,2BAAW,GAChB,2FAA2F;IAC3F,mGAAmG;IACnG,oEAAoE,CAAC;AAEhE,wBAAQ,GAAG;IAChB,iEAAiE;IACjE,8EAA8E;IAC9E,iGAAiG;CAClG,CAAC;AAEK,oBAAI,GAAG;IACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,sEAAsE;QACnF,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE,WAAI,CAAC,MAAM,CAAC;QACvB,WAAW,EACT,6FAA6F;YAC7F,0EAA0E;QAC5E,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,qBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,+EAA+E;KAC7F,CAAC;CACH,CAAC;kBA/BiB,eAAe"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class AndroidPushFile extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ path: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ destination: import("@oclif/core/lib/interfaces").Arg<string | undefined, 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
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=push-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-file.d.ts","sourceRoot":"","sources":["../../../src/commands/android/push-file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAAqD;IACnE,MAAM,CAAC,WAAW,SAI6D;IAE/E,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;;MAST;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB3B"}
@@ -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 AndroidPushFile extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(AndroidPushFile);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ const localPath = path_1.default.resolve(args.path);
17
+ if (!fs_1.default.existsSync(localPath)) {
18
+ this.error(`File not found: ${localPath}`);
19
+ }
20
+ const resolvedInstance = this.resolveAndroidInstance(flags.id);
21
+ const { client, disconnect } = await (0, instance_client_factory_1.getAndroidInstanceClient)(this.client, resolvedInstance);
22
+ try {
23
+ const remotePath = await client.pushFile(localPath, args.destination);
24
+ if (flags.json) {
25
+ this.outputJson({ remotePath });
26
+ }
27
+ else {
28
+ this.output(remotePath);
29
+ }
30
+ }
31
+ finally {
32
+ disconnect();
33
+ }
34
+ });
35
+ }
36
+ }
37
+ AndroidPushFile.summary = 'Push a local file to a running Android instance';
38
+ AndroidPushFile.description = 'Upload a local file to the Android instance without an ADB connection and print the remote path. ' +
39
+ 'With a destination argument this behaves like `adb push`: the write happens with the same permissions ' +
40
+ 'the ADB shell user has, so protected locations are rejected just as they would be for adb. ' +
41
+ 'Without a destination the instance stores the file under an internal name.';
42
+ AndroidPushFile.examples = [
43
+ '<%= config.bin %> android push-file ./video.mp4',
44
+ '<%= config.bin %> android push-file ./video.mp4 /data/local/tmp/video.mp4',
45
+ '<%= config.bin %> android push-file ./document.pdf /sdcard/Download/document.pdf --id <instance-ID>',
46
+ ];
47
+ AndroidPushFile.args = {
48
+ path: core_1.Args.string({
49
+ description: 'Local file path to upload to the instance.',
50
+ required: true,
51
+ }),
52
+ destination: core_1.Args.string({
53
+ description: 'Optional absolute destination path on the instance, like the adb push destination.',
54
+ required: false,
55
+ }),
56
+ };
57
+ AndroidPushFile.flags = {
58
+ ...base_command_1.BaseCommand.baseFlags,
59
+ id: core_1.Flags.string({
60
+ description: 'Android instance ID to target. Defaults to the last created Android instance.',
61
+ }),
62
+ };
63
+ exports.default = AndroidPushFile;
64
+ //# sourceMappingURL=push-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-file.js","sourceRoot":"","sources":["../../../src/commands/android/push-file.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,sCAA0C;AAC1C,qDAAiD;AACjD,+EAA6E;AAE7E,MAAqB,eAAgB,SAAQ,0BAAW;IAgCtD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,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,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,kDAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC7F,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAtDM,uBAAO,GAAG,iDAAiD,CAAC;AAC5D,2BAAW,GAChB,mGAAmG;IACnG,wGAAwG;IACxG,6FAA6F;IAC7F,4EAA4E,CAAC;AAExE,wBAAQ,GAAG;IAChB,iDAAiD;IACjD,2EAA2E;IAC3E,qGAAqG;CACtG,CAAC;AAEK,oBAAI,GAAG;IACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE,WAAI,CAAC,MAAM,CAAC;QACvB,WAAW,EAAE,oFAAoF;QACjG,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,qBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,+EAA+E;KAC7F,CAAC;CACH,CAAC;kBA9BiB,eAAe"}
@@ -18,6 +18,7 @@ export default class IosCreate extends BaseCommand {
18
18
  model: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
19
  'reuse-if-exists': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
20
  'install-asset': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
+ 'install-url': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
22
  keychain: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
22
23
  'keychain-url': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
23
24
  'encryption-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SAC4K;IAE9L,MAAM,CAAC,QAAQ,WASb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgFV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkP3B"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SAC4K;IAE9L,MAAM,CAAC,QAAQ,WAUb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqFV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4P3B"}