lim 0.15.0 → 0.15.1
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/dist/commands/android/play-on-microphone.d.ts +22 -0
- package/dist/commands/android/play-on-microphone.d.ts.map +1 -0
- package/dist/commands/android/play-on-microphone.js +92 -0
- package/dist/commands/android/play-on-microphone.js.map +1 -0
- package/dist/lib/instance-client-factory.d.ts +3 -1
- package/dist/lib/instance-client-factory.d.ts.map +1 -1
- package/dist/lib/instance-client-factory.js +3 -1
- package/dist/lib/instance-client-factory.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class AndroidPlayOnMicrophone 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
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
once: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
'adb-path': import("@oclif/core/lib/interfaces").OptionFlag<string, 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
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
private execAdb;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=play-on-microphone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-on-microphone.d.ts","sourceRoot":"","sources":["../../../src/commands/android/play-on-microphone.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,WAAW;IAC9D,MAAM,CAAC,OAAO,SAA+E;IAC7F,MAAM,CAAC,WAAW,SACuF;IAEzG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAaV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C1B,OAAO,CAAC,OAAO;CAYhB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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 child_process_1 = require("child_process");
|
|
9
|
+
const core_1 = require("@oclif/core");
|
|
10
|
+
const base_command_1 = require("../../base-command");
|
|
11
|
+
const instance_client_factory_1 = require("../../lib/instance-client-factory");
|
|
12
|
+
const REMOTE_AUDIO_DIR = '/data/local/tmp';
|
|
13
|
+
class AndroidPlayOnMicrophone extends base_command_1.BaseCommand {
|
|
14
|
+
async run() {
|
|
15
|
+
const { args, flags } = await this.parse(AndroidPlayOnMicrophone);
|
|
16
|
+
this.setParsedFlags(flags);
|
|
17
|
+
await this.withAuth(async () => {
|
|
18
|
+
const localPath = path_1.default.resolve(args.path);
|
|
19
|
+
if (!fs_1.default.existsSync(localPath)) {
|
|
20
|
+
this.error(`File not found: ${localPath}`);
|
|
21
|
+
}
|
|
22
|
+
const stat = fs_1.default.statSync(localPath);
|
|
23
|
+
if (!stat.isFile()) {
|
|
24
|
+
this.error(`Path is not a file: ${localPath}`);
|
|
25
|
+
}
|
|
26
|
+
const remotePath = `${REMOTE_AUDIO_DIR}/${path_1.default.basename(localPath)}`;
|
|
27
|
+
const resolvedInstance = this.resolveAndroidInstance(flags.id);
|
|
28
|
+
const { client, disconnect } = await (0, instance_client_factory_1.getAndroidInstanceClient)(this.client, resolvedInstance, {
|
|
29
|
+
adbPath: flags['adb-path'],
|
|
30
|
+
});
|
|
31
|
+
let tunnel;
|
|
32
|
+
try {
|
|
33
|
+
tunnel = await client.startAdbTunnel();
|
|
34
|
+
const serial = `${tunnel.address.address}:${tunnel.address.port}`;
|
|
35
|
+
this.info(`Pushing ${path_1.default.basename(localPath)} to ${remotePath}...`);
|
|
36
|
+
await this.execAdb(flags['adb-path'], ['-s', serial, 'push', localPath, remotePath]);
|
|
37
|
+
const result = await client.playOnMicrophone(remotePath, { once: flags.once });
|
|
38
|
+
if (flags.json) {
|
|
39
|
+
this.outputJson(result);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.log(`Playing ${remotePath} on microphone (duration=${result.duration}us, once=${result.once}, generation=${result.generation})`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
tunnel?.close();
|
|
47
|
+
disconnect();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
execAdb(adbPath, args) {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
(0, child_process_1.execFile)(adbPath, args, (error, stdout, stderr) => {
|
|
54
|
+
if (error) {
|
|
55
|
+
const output = `${stdout}${stderr}`.trim();
|
|
56
|
+
reject(new Error(output ? `${error.message}: ${output}` : error.message));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
resolve();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
AndroidPlayOnMicrophone.summary = 'Play a local audio file as microphone input on a running Android instance';
|
|
65
|
+
AndroidPlayOnMicrophone.description = 'Push a local WAV/MP3 file to the Android instance with ADB, then play it as mocked microphone input.';
|
|
66
|
+
AndroidPlayOnMicrophone.examples = [
|
|
67
|
+
'<%= config.bin %> android play-on-microphone ./sample.wav',
|
|
68
|
+
'<%= config.bin %> android play-on-microphone ./sample.mp3 --once',
|
|
69
|
+
'<%= config.bin %> android play-on-microphone ./sample.wav --id <instance-ID>',
|
|
70
|
+
];
|
|
71
|
+
AndroidPlayOnMicrophone.args = {
|
|
72
|
+
path: core_1.Args.string({
|
|
73
|
+
description: 'Local WAV/MP3 file path to push and play as microphone input',
|
|
74
|
+
required: true,
|
|
75
|
+
}),
|
|
76
|
+
};
|
|
77
|
+
AndroidPlayOnMicrophone.flags = {
|
|
78
|
+
...base_command_1.BaseCommand.baseFlags,
|
|
79
|
+
id: core_1.Flags.string({
|
|
80
|
+
description: 'Android instance ID to target. Defaults to the last created Android instance.',
|
|
81
|
+
}),
|
|
82
|
+
once: core_1.Flags.boolean({
|
|
83
|
+
description: 'Play the audio file once instead of looping it',
|
|
84
|
+
default: false,
|
|
85
|
+
}),
|
|
86
|
+
'adb-path': core_1.Flags.string({
|
|
87
|
+
description: 'Path to the adb binary available on your machine',
|
|
88
|
+
default: 'adb',
|
|
89
|
+
}),
|
|
90
|
+
};
|
|
91
|
+
exports.default = AndroidPlayOnMicrophone;
|
|
92
|
+
//# sourceMappingURL=play-on-microphone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-on-microphone.js","sourceRoot":"","sources":["../../../src/commands/android/play-on-microphone.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export declare function hasActiveSession(id: string): boolean;
|
|
|
24
24
|
* Send a command via the daemon session for the given instance ID.
|
|
25
25
|
*/
|
|
26
26
|
export declare function sendSessionCommand(instanceId: string, command: string, args?: unknown[], timeoutMs?: number): Promise<unknown>;
|
|
27
|
-
export declare function getAndroidInstanceClient(lim: Limrun, target: LastAndroidInstance
|
|
27
|
+
export declare function getAndroidInstanceClient(lim: Limrun, target: LastAndroidInstance, options?: {
|
|
28
|
+
adbPath?: string;
|
|
29
|
+
}): Promise<ResolvedAndroidInstanceClient>;
|
|
28
30
|
export declare function getIosInstanceClient(lim: Limrun, target: LastIosInstance): Promise<ResolvedIosInstanceClient>;
|
|
29
31
|
//# sourceMappingURL=instance-client-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-client-factory.d.ts","sourceRoot":"","sources":["../../src/lib/instance-client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAwB,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAqB,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAE7F,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC;IAC3B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAQ3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,OAAO,EAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"instance-client-factory.d.ts","sourceRoot":"","sources":["../../src/lib/instance-client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAwB,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAqB,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAE7F,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC;IAC3B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAQ3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,OAAO,EAAO,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,6BAA6B,CAAC,CAiCxC;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,yBAAyB,CAAC,CAuBpC"}
|
|
@@ -30,12 +30,13 @@ function hasActiveSession(id) {
|
|
|
30
30
|
function sendSessionCommand(instanceId, command, args = [], timeoutMs) {
|
|
31
31
|
return (0, daemon_client_1.sendCommand)(instanceId, command, args, timeoutMs);
|
|
32
32
|
}
|
|
33
|
-
async function getAndroidInstanceClient(lim, target) {
|
|
33
|
+
async function getAndroidInstanceClient(lim, target, options = {}) {
|
|
34
34
|
if (target.apiUrl && target.token) {
|
|
35
35
|
const client = await (0, api_1.createInstanceClient)({
|
|
36
36
|
apiUrl: target.apiUrl,
|
|
37
37
|
adbUrl: target.adbWebSocketUrl,
|
|
38
38
|
token: target.token,
|
|
39
|
+
adbPath: options.adbPath,
|
|
39
40
|
});
|
|
40
41
|
return { type: 'android', client, disconnect: () => client.disconnect(), isSession: false };
|
|
41
42
|
}
|
|
@@ -58,6 +59,7 @@ async function getAndroidInstanceClient(lim, target) {
|
|
|
58
59
|
apiUrl,
|
|
59
60
|
adbUrl: instance.status.adbWebSocketUrl,
|
|
60
61
|
token,
|
|
62
|
+
adbPath: options.adbPath,
|
|
61
63
|
});
|
|
62
64
|
return { type: 'android', client, disconnect: () => client.disconnect(), isSession: false };
|
|
63
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-client-factory.js","sourceRoot":"","sources":["../../src/lib/instance-client-factory.ts"],"names":[],"mappings":";;AAsBA,gDAQC;AAKD,4CAEC;AAKD,gDAOC;AAED,
|
|
1
|
+
{"version":3,"file":"instance-client-factory.js","sourceRoot":"","sources":["../../src/lib/instance-client-factory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lim",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"description": "Use remote XCode, iOS Simulator, Android Emulator and more to build and test apps from Linux, Windows or macOS.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"lim": "./bin/run.js"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"test": "jest"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@limrun/api": "^0.33.
|
|
28
|
+
"@limrun/api": "^0.33.2",
|
|
29
29
|
"@oclif/core": "^4",
|
|
30
30
|
"cli-progress": "^3.12.0",
|
|
31
31
|
"cli-table3": "^0.6.5",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"description": "Execute any task on remote iOS Simulators: create, list, get, delete, info, list-apps, launch-app, terminate-app, app-log, syslog, sync, screenshot, tap, tap-element, element-tree, type, press-key, toggle-keyboard, scroll, open-url, install-app, record, perform, simctl, cp, xcrun, xcodebuild, lsof, reverse"
|
|
53
53
|
},
|
|
54
54
|
"android": {
|
|
55
|
-
"description": "Execute any task on remote Android Emulators: create, list, get, delete, connect, screenshot, tap, tap-element, find-element, element-tree, type, press-key, scroll, open-url, install-app, record, set-wifi-bandwidth"
|
|
55
|
+
"description": "Execute any task on remote Android Emulators: create, list, get, delete, connect, screenshot, tap, tap-element, find-element, element-tree, type, press-key, scroll, open-url, install-app, record, play-on-microphone, set-wifi-bandwidth"
|
|
56
56
|
},
|
|
57
57
|
"xcode": {
|
|
58
58
|
"description": "Execute any task on remote XCode sandboxes: create, list, get, delete, sync, build, attach-simulator"
|