aiot-toolkit 1.0.20-importfile-dev.2 → 2.0.1-alpha.10

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 +26 -192
  2. package/lib/bin.d.ts +2 -0
  3. package/lib/bin.js +148 -0
  4. package/lib/bin.js.map +1 -0
  5. package/lib/builder/IBuilder.d.ts +22 -0
  6. package/lib/builder/IBuilder.js +4 -0
  7. package/lib/builder/IBuilder.js.map +1 -0
  8. package/lib/builder/UxBuilder.d.ts +26 -0
  9. package/lib/builder/UxBuilder.js +102 -0
  10. package/lib/builder/UxBuilder.js.map +1 -0
  11. package/lib/builder/XtsBuilder.d.ts +16 -0
  12. package/lib/builder/XtsBuilder.js +100 -0
  13. package/lib/builder/XtsBuilder.js.map +1 -0
  14. package/lib/interface/CommandInterface.d.ts +15 -0
  15. package/lib/interface/CommandInterface.js +4 -0
  16. package/lib/interface/CommandInterface.js.map +1 -0
  17. package/lib/interface/VelaEmulatorInterface.d.ts +8 -0
  18. package/lib/interface/VelaEmulatorInterface.js +4 -0
  19. package/lib/interface/VelaEmulatorInterface.js.map +1 -0
  20. package/lib/starter/GoldfishStarter.d.ts +9 -0
  21. package/lib/starter/GoldfishStarter.js +108 -0
  22. package/lib/starter/GoldfishStarter.js.map +1 -0
  23. package/lib/utils/AdbUtils.d.ts +14 -0
  24. package/lib/utils/AdbUtils.js +103 -0
  25. package/lib/utils/AdbUtils.js.map +1 -0
  26. package/lib/utils/DeviceUtil.d.ts +62 -0
  27. package/lib/utils/DeviceUtil.js +366 -0
  28. package/lib/utils/DeviceUtil.js.map +1 -0
  29. package/lib/utils/RequestUtils.d.ts +11 -0
  30. package/lib/utils/RequestUtils.js +90 -0
  31. package/lib/utils/RequestUtils.js.map +1 -0
  32. package/lib/utils/VelaAvdUtils.d.ts +39 -0
  33. package/lib/utils/VelaAvdUtils.js +308 -0
  34. package/lib/utils/VelaAvdUtils.js.map +1 -0
  35. package/lib/waiter.d.ts +3 -0
  36. package/lib/waiter.js +39 -0
  37. package/lib/waiter.js.map +1 -0
  38. package/package.json +33 -47
  39. package/CHANGELOG.md +0 -353
  40. package/bin/index.js +0 -495
  41. package/gen-webpack-conf/get-devtool.js +0 -51
  42. package/gen-webpack-conf/helpers.js +0 -143
  43. package/gen-webpack-conf/index.js +0 -436
  44. package/gen-webpack-conf/manifest-schema.js +0 -284
  45. package/gen-webpack-conf/validate.js +0 -284
  46. package/lib/commands/compile.js +0 -2
  47. package/lib/commands/debug.js +0 -2
  48. package/lib/commands/init.js +0 -2
  49. package/lib/commands/packages.js +0 -2
  50. package/lib/commands/preview.js +0 -2
  51. package/lib/commands/report.js +0 -2
  52. package/lib/commands/resign.js +0 -2
  53. package/lib/commands/update.js +0 -2
  54. package/lib/commands/utils.js +0 -2
  55. package/lib/index.js +0 -2
  56. package/lib/plugins/manifest-watch-plugin.js +0 -2
  57. package/lib/utils.js +0 -2
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const aiotpack_1 = require("@aiot-toolkit/aiotpack");
16
+ const ICompileOptions_1 = require("@aiot-toolkit/aiotpack/lib/interface/ICompileOptions");
17
+ const shared_utils_1 = require("@aiot-toolkit/shared-utils");
18
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
19
+ const StringUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/StringUtil"));
20
+ const file_lane_1 = require("file-lane");
21
+ const FileLaneUtil_1 = __importDefault(require("file-lane/lib/utils/FileLaneUtil"));
22
+ const fs_1 = __importDefault(require("fs"));
23
+ const path_1 = __importDefault(require("path"));
24
+ /**
25
+ * XtsBuilder
26
+ */
27
+ class XtsBuilder {
28
+ constructor() {
29
+ this.params = [
30
+ {
31
+ name: 'skip',
32
+ type: 'string',
33
+ description: `Can configure skip steps, comma separated, optional values: ${ICompileOptions_1.skipList.join(',')}`,
34
+ validate(value) {
35
+ // TODO: validate 不起作用
36
+ const res = StringUtil_1.default.string2arrayByComma(value);
37
+ const unValid = res.find((r) => {
38
+ return !ICompileOptions_1.skipList.includes(r);
39
+ });
40
+ if (unValid) {
41
+ return `${unValid} is unvalidate, validate value are ${ICompileOptions_1.skipList.join(',')}, Multiple values separated by commas`;
42
+ }
43
+ return true;
44
+ }
45
+ }
46
+ ];
47
+ }
48
+ match(projectPath) {
49
+ // app/app.xts 存在视为xts项目
50
+ return fs_1.default.existsSync(path_1.default.resolve(projectPath, 'app/app.xts'));
51
+ }
52
+ build(projectPath, options) {
53
+ var _a;
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const { watch } = options;
56
+ ColorConsole_1.default.log({
57
+ message: JSON.stringify({
58
+ projectPath,
59
+ options
60
+ }, undefined, 2),
61
+ level: shared_utils_1.LOG_LEVEL.Success
62
+ });
63
+ const compilerOptions = {
64
+ skip: StringUtil_1.default.string2arrayByComma(options.skip)
65
+ };
66
+ const config = new aiotpack_1.XtsConfig();
67
+ if ((_a = compilerOptions.skip) === null || _a === void 0 ? void 0 : _a.includes('xts2ts')) {
68
+ ColorConsole_1.default.log({
69
+ message: "skip compile xts to ts due to --skip ${compilerOptions?.skip.join(',')}"
70
+ });
71
+ const context = FileLaneUtil_1.default.createContext(config.output, projectPath);
72
+ const preWorks = config.preWorks || [];
73
+ for (let item of preWorks) {
74
+ try {
75
+ yield item(context, [], config, compilerOptions);
76
+ }
77
+ catch (error) {
78
+ // 报错 prework的item error
79
+ }
80
+ }
81
+ const follWorks = config.followWorks || [];
82
+ for (let item of follWorks) {
83
+ try {
84
+ yield item(context, config, compilerOptions);
85
+ }
86
+ catch (error) {
87
+ // 报错 prework的item error
88
+ }
89
+ }
90
+ }
91
+ else {
92
+ return new file_lane_1.FileLane(config, projectPath, compilerOptions).start({ watch });
93
+ }
94
+ });
95
+ }
96
+ }
97
+ XtsBuilder.PROJECT_TYPE = 'xts quick app';
98
+ exports.default = XtsBuilder;
99
+
100
+ //# sourceMappingURL=XtsBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["builder/XtsBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,qDAAkD;AAKlD,0FAA+E;AAG/E,6DAAsD;AACtD,+FAAsE;AACtE,iGAAwE;AACxE,yCAAoC;AACpC,oFAA2D;AAC3D,4CAAmB;AACnB,gDAAuB;AAQvB;;GAEG;AACH,MAAM,UAAU;IAAhB;QAuDW,WAAM,GAAa;YAC1B;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+DAA+D,0BAAQ,CAAC,IAAI,CACvF,GAAG,CACJ,EAAE;gBACH,QAAQ,CAAC,KAAa;oBACpB,sBAAsB;oBACtB,MAAM,GAAG,GAAG,oBAAU,CAAC,mBAAmB,CAAC,KAAK,CAAqB,CAAA;oBACrE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC7B,OAAO,CAAC,0BAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;oBAC9B,CAAC,CAAC,CAAA;oBAEF,IAAI,OAAO,EAAE;wBACX,OAAO,GAAG,OAAO,uCAAuC,0BAAQ,CAAC,IAAI,CACnE,GAAG,CACJ,uCAAuC,CAAA;qBACzC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;aACF;SACF,CAAA;IACH,CAAC;IA3EC,KAAK,CAAC,WAAmB;QACvB,wBAAwB;QACxB,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;IAChE,CAAC;IAEK,KAAK,CAAC,WAAmB,EAAE,OAAuB;;;YACtD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;YACzB,sBAAY,CAAC,GAAG,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,SAAS,CACrB;oBACE,WAAW;oBACX,OAAO;iBACR,EACD,SAAS,EACT,CAAC,CACF;gBACD,KAAK,EAAE,wBAAS,CAAC,OAAO;aACzB,CAAC,CAAA;YACF,MAAM,eAAe,GAAuB;gBAC1C,IAAI,EAAE,oBAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAyB;aAC3E,CAAA;YAED,MAAM,MAAM,GAAG,IAAI,oBAAS,EAAE,CAAA;YAC9B,IAAI,MAAA,eAAe,CAAC,IAAI,0CAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC5C,sBAAY,CAAC,GAAG,CAAC;oBACf,OAAO,EAAE,yEAAyE;iBACnF,CAAC,CAAA;gBACF,MAAM,OAAO,GAAG,sBAAY,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;gBAEtE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;gBACtC,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;oBACzB,IAAI;wBACF,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;qBACjD;oBAAC,OAAO,KAAK,EAAE;wBACd,wBAAwB;qBACzB;iBACF;gBAED,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAA;gBAE1C,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;oBAC1B,IAAI;wBACF,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;qBAC7C;oBAAC,OAAO,KAAK,EAAE;wBACd,wBAAwB;qBACzB;iBACF;aACF;iBAAM;gBACL,OAAO,IAAI,oBAAQ,CAAqB,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;aAC/F;;KACF;;AApDe,uBAAY,GAAG,eAAH,AAAkB,CAAA;AA8EhD,kBAAe,UAAU,CAAA","file":"XtsBuilder.js","sourcesContent":["import { XtsConfig } from '@aiot-toolkit/aiotpack'\nimport type {\n ISkipList,\n IXtsCompileOptions\n} from '@aiot-toolkit/aiotpack/lib/interface/ICompileOptions'\nimport { skipList } from '@aiot-toolkit/aiotpack/lib/interface/ICompileOptions'\n\nimport { IParam } from '@aiot-toolkit/commander'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport StringUtil from '@aiot-toolkit/shared-utils/lib/utils/StringUtil'\nimport { FileLane } from 'file-lane'\nimport FileLaneUtil from 'file-lane/lib/utils/FileLaneUtil'\nimport fs from 'fs'\nimport path from 'path'\nimport IBuilder from './IBuilder'\n\nexport interface IBuilderOption {\n watch?: boolean\n skip?: string\n}\n\n/**\n * XtsBuilder\n */\nclass XtsBuilder implements IBuilder<IBuilderOption> {\n static readonly PROJECT_TYPE = 'xts quick app'\n\n match(projectPath: string): boolean {\n // app/app.xts 存在视为xts项目\n return fs.existsSync(path.resolve(projectPath, 'app/app.xts'))\n }\n\n async build(projectPath: string, options: IBuilderOption) {\n const { watch } = options\n ColorConsole.log({\n message: JSON.stringify(\n {\n projectPath,\n options\n },\n undefined,\n 2\n ),\n level: LOG_LEVEL.Success\n })\n const compilerOptions: IXtsCompileOptions = {\n skip: StringUtil.string2arrayByComma(options.skip) as unknown as ISkipList\n }\n\n const config = new XtsConfig()\n if (compilerOptions.skip?.includes('xts2ts')) {\n ColorConsole.log({\n message: \"skip compile xts to ts due to --skip ${compilerOptions?.skip.join(',')}\"\n })\n const context = FileLaneUtil.createContext(config.output, projectPath)\n\n const preWorks = config.preWorks || []\n for (let item of preWorks) {\n try {\n await item(context, [], config, compilerOptions)\n } catch (error) {\n // 报错 prework的item error\n }\n }\n\n const follWorks = config.followWorks || []\n\n for (let item of follWorks) {\n try {\n await item(context, config, compilerOptions)\n } catch (error) {\n // 报错 prework的item error\n }\n }\n } else {\n return new FileLane<IXtsCompileOptions>(config, projectPath, compilerOptions).start({ watch })\n }\n }\n\n readonly params: IParam[] = [\n {\n name: 'skip',\n type: 'string',\n description: `Can configure skip steps, comma separated, optional values: ${skipList.join(\n ','\n )}`,\n validate(value: string) {\n // TODO: validate 不起作用\n const res = StringUtil.string2arrayByComma(value) as any as ISkipList\n const unValid = res.find((r) => {\n return !skipList.includes(r)\n })\n\n if (unValid) {\n return `${unValid} is unvalidate, validate value are ${skipList.join(\n ','\n )}, Multiple values separated by commas`\n }\n return true\n }\n }\n ]\n}\nexport default XtsBuilder\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * IInstallApkAndDbg
3
+ */
4
+ export interface IInstallApkAndDbg {
5
+ ip?: string;
6
+ port?: string;
7
+ platform?: string;
8
+ apkVersion?: string;
9
+ forceInstall?: boolean;
10
+ }
11
+ export interface IGetAvailablePlatform {
12
+ ip: string;
13
+ port: string;
14
+ sn: string;
15
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=CommandInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["interface/CommandInterface.ts"],"names":[],"mappings":"","file":"CommandInterface.js","sourcesContent":["/**\n * IInstallApkAndDbg\n */\nexport interface IInstallApkAndDbg {\n ip?: string\n port?: string\n platform?: string\n apkVersion?: string\n forceInstall?: boolean\n}\nexport interface IGetAvailablePlatform {\n ip: string\n port: string\n sn: string\n}\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,8 @@
1
+ export interface IGoldfishVersionInfo {
2
+ name: string;
3
+ emulator: string;
4
+ 'system-images': string;
5
+ qa: string;
6
+ skins: string;
7
+ tools: string;
8
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=VelaEmulatorInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["interface/VelaEmulatorInterface.ts"],"names":[],"mappings":"","file":"VelaEmulatorInterface.js","sourcesContent":["export interface IGoldfishVersionInfo {\n name: string;\n emulator: string;\n 'system-images': string;\n qa: string;\n skins: string;\n tools: string;\n}"],"sourceRoot":"../../src"}
@@ -0,0 +1,9 @@
1
+ import { ICommand } from '@aiot-toolkit/commander';
2
+ declare class GoldfishStarter {
3
+ private name;
4
+ private description;
5
+ constructor(name: string, description: string);
6
+ getParamList(): ICommand;
7
+ start(option: any): Promise<void>;
8
+ }
9
+ export default GoldfishStarter;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const commander_1 = require("@aiot-toolkit/commander");
16
+ const emulator_1 = require("@aiot-toolkit/emulator");
17
+ const shared_utils_1 = require("@aiot-toolkit/shared-utils");
18
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
19
+ const prompts_1 = require("@inquirer/prompts");
20
+ const os_1 = __importDefault(require("os"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const VelaAvdUtils_1 = __importDefault(require("../utils/VelaAvdUtils"));
23
+ class GoldfishStarter {
24
+ constructor(name, description) {
25
+ this.name = name;
26
+ this.description = description;
27
+ }
28
+ getParamList() {
29
+ return {
30
+ name: this.name,
31
+ description: this.description,
32
+ paramList: [
33
+ {
34
+ name: 'devtool',
35
+ description: 'source map config'
36
+ },
37
+ {
38
+ name: 'disableNSH',
39
+ description: 'disable goldfish NSH terminal',
40
+ defaultValue: false,
41
+ type: 'confirm'
42
+ }
43
+ ],
44
+ action: (option) => __awaiter(this, void 0, void 0, function* () {
45
+ this.start(option);
46
+ })
47
+ };
48
+ }
49
+ start(option) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ const avdList = VelaAvdUtils_1.default.velaAvdCls.getVelaAvdList();
52
+ if (avdList.length === 0) {
53
+ ColorConsole_1.default.log({
54
+ level: shared_utils_1.LOG_LEVEL.Error,
55
+ message: 'No vela emulator available, please create it first.',
56
+ isOnlyPrintError: true
57
+ });
58
+ VelaAvdUtils_1.default.createVelaAvdByInquire();
59
+ return;
60
+ }
61
+ const avdName = yield (0, prompts_1.select)({
62
+ message: 'name of the avd to start',
63
+ choices: avdList.map((item) => {
64
+ return { value: item.avdName };
65
+ })
66
+ });
67
+ const goldfishInstance = new emulator_1.GoldfishInstance({
68
+ sdkHome: path_1.default.resolve(os_1.default.homedir(), '.export'),
69
+ avdHome: path_1.default.resolve(os_1.default.homedir(), '.android/avd'),
70
+ projectPath: process.cwd()
71
+ });
72
+ const startOptions = {
73
+ avdName,
74
+ devtool: option.devtool,
75
+ disableNSH: option.disableNSH
76
+ };
77
+ goldfishInstance.start(startOptions);
78
+ // waiter
79
+ const startWaiter = new commander_1.PersistentCommand({
80
+ description: 'aiot-toolkit start 的常驻命令',
81
+ options: [
82
+ {
83
+ key: 'r',
84
+ description: `重启快应用 ${option.disableNSH ? '' : '(需要手动关闭模拟器)'}`,
85
+ action() {
86
+ console.log('重启中......');
87
+ goldfishInstance.stop();
88
+ goldfishInstance.start(startOptions);
89
+ }
90
+ },
91
+ {
92
+ key: '?',
93
+ description: '显示所有命令',
94
+ action() {
95
+ startWaiter.clearLog();
96
+ startWaiter.describe();
97
+ }
98
+ }
99
+ ]
100
+ });
101
+ startWaiter.describe();
102
+ startWaiter.start();
103
+ });
104
+ }
105
+ }
106
+ exports.default = GoldfishStarter;
107
+
108
+ //# sourceMappingURL=GoldfishStarter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["starter/GoldfishStarter.ts"],"names":[],"mappings":"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","file":"GoldfishStarter.js","sourcesContent":["import { ICommand, PersistentCommand } from '@aiot-toolkit/commander'\nimport { GoldfishInstance, IAvdParams, IStartOptions } from '@aiot-toolkit/emulator'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { select } from '@inquirer/prompts'\nimport os from 'os'\nimport path from 'path'\nimport VelaAvdUtils from '../utils/VelaAvdUtils'\n\nclass GoldfishStarter {\n constructor(\n private name: string,\n private description: string\n ) {}\n\n getParamList(): ICommand {\n return {\n name: this.name,\n description: this.description,\n paramList: [\n {\n name: 'devtool',\n description: 'source map config'\n },\n {\n name: 'disableNSH',\n description: 'disable goldfish NSH terminal',\n defaultValue: false,\n type: 'confirm'\n }\n ],\n action: async (option: any) => {\n this.start(option)\n }\n }\n }\n\n async start(option: any) {\n const avdList: IAvdParams[] = VelaAvdUtils.velaAvdCls.getVelaAvdList()\n if (avdList.length === 0) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: 'No vela emulator available, please create it first.',\n isOnlyPrintError: true\n })\n VelaAvdUtils.createVelaAvdByInquire()\n return\n }\n const avdName = await select({\n message: 'name of the avd to start',\n choices: avdList.map((item) => {\n return { value: item.avdName }\n })\n })\n const goldfishInstance = new GoldfishInstance({\n sdkHome: path.resolve(os.homedir(), '.export'),\n avdHome: path.resolve(os.homedir(), '.android/avd'),\n projectPath: process.cwd()\n })\n const startOptions: IStartOptions = {\n avdName,\n devtool: option.devtool,\n disableNSH: option.disableNSH\n }\n goldfishInstance.start(startOptions)\n // waiter\n const startWaiter: PersistentCommand = new PersistentCommand({\n description: 'aiot-toolkit start 的常驻命令',\n options: [\n {\n key: 'r',\n description: `重启快应用 ${option.disableNSH ? '' : '(需要手动关闭模拟器)'}`,\n action() {\n console.log('重启中......')\n goldfishInstance.stop()\n goldfishInstance.start(startOptions)\n }\n },\n {\n key: '?',\n description: '显示所有命令',\n action() {\n startWaiter.clearLog()\n startWaiter.describe()\n }\n }\n ]\n })\n startWaiter.describe()\n startWaiter.start()\n }\n}\n\nexport default GoldfishStarter\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * AdbUtils
3
+ */
4
+ declare class AdbUtils {
5
+ static connect(ip: string, port: string): Promise<boolean>;
6
+ static getAllConnectedDevices(): Promise<string[]>;
7
+ static getUSBConnectedDevices(): Promise<string[]>;
8
+ static installApk(sn: string, apkPath: string): Promise<{
9
+ status: boolean;
10
+ msg: string;
11
+ }>;
12
+ static startDebugger(deviceSn: string): Promise<void>;
13
+ }
14
+ export default AdbUtils;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const shared_utils_1 = require("@aiot-toolkit/shared-utils");
39
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
40
+ const adbMiwt = __importStar(require("@miwt/adb"));
41
+ const adb_commander_1 = __importDefault(require("adb-commander"));
42
+ /**
43
+ * AdbUtils
44
+ */
45
+ class AdbUtils {
46
+ // 连接设备
47
+ static connect(ip, port) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const adbConnet = yield adbMiwt.execAdbCmdAsync(`adb connect ${ip}:${port}`);
50
+ return adbConnet.indexOf('connected to') >= 0;
51
+ });
52
+ }
53
+ // 获取所有已连接的设备(包含无线连接设备)
54
+ static getAllConnectedDevices() {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ const res = yield adbMiwt.getAdbDevices();
57
+ return res.map(({ sn }) => sn);
58
+ });
59
+ }
60
+ // 获取USB连接的设备
61
+ static getUSBConnectedDevices() {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const res = yield adb_commander_1.default.deviceList();
64
+ return res.deviceList;
65
+ });
66
+ }
67
+ // 安装设备
68
+ static installApk(sn, apkPath) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const result = yield adbMiwt.installApk(sn, apkPath);
71
+ return result;
72
+ });
73
+ }
74
+ // 启动调试器
75
+ static startDebugger(deviceSn) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ const adbShell = adbMiwt.execAdbCmd(`adb -s ${deviceSn} shell am start -n "org.hapjs.debugger/.MainActivity"`);
78
+ adbShell.stdout.on('data', (data) => {
79
+ // 监听stderr事件,获取输出内容
80
+ ColorConsole_1.default.log({
81
+ message: data
82
+ });
83
+ });
84
+ adbShell.stderr.on('data', (data) => {
85
+ // 监听stderr事件,获取输出内容
86
+ if (data.indexOf('Error') >= 0) {
87
+ ColorConsole_1.default.log({
88
+ level: shared_utils_1.LOG_LEVEL.Error,
89
+ message: data
90
+ });
91
+ process.exit();
92
+ }
93
+ });
94
+ adbShell.on('close', () => {
95
+ // 处理命令正常结束
96
+ Promise.resolve();
97
+ });
98
+ });
99
+ }
100
+ }
101
+ exports.default = AdbUtils;
102
+
103
+ //# sourceMappingURL=AdbUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["utils/AdbUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAAsD;AACtD,+FAAsE;AACtE,mDAAoC;AACpC,kEAAwC;AAExC;;GAEG;AACH,MAAM,QAAQ;IACZ,OAAO;IACP,MAAM,CAAO,OAAO,CAAC,EAAU,EAAE,IAAY;;YAC3C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;YAC5E,OAAO,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC;KAAA;IACD,uBAAuB;IACvB,MAAM,CAAO,sBAAsB;;YACjC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAA;YACzC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QAChC,CAAC;KAAA;IACD,aAAa;IACb,MAAM,CAAO,sBAAsB;;YACjC,MAAM,GAAG,GAAG,MAAM,uBAAY,CAAC,UAAU,EAAE,CAAA;YAC3C,OAAO,GAAG,CAAC,UAAU,CAAA;QACvB,CAAC;KAAA;IACD,OAAO;IACP,MAAM,CAAO,UAAU,CAAC,EAAU,EAAE,OAAe;;YACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACpD,OAAO,MAAM,CAAA;QACf,CAAC;KAAA;IACD,QAAQ;IACR,MAAM,CAAO,aAAa,CAAC,QAAgB;;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CACjC,UAAU,QAAQ,uDAAuD,CAC1E,CAAA;YACD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC1C,oBAAoB;gBACpB,sBAAY,CAAC,GAAG,CAAC;oBACf,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC1C,oBAAoB;gBACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC9B,sBAAY,CAAC,GAAG,CAAC;wBACf,KAAK,EAAE,wBAAS,CAAC,KAAK;wBACtB,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;oBACF,OAAO,CAAC,IAAI,EAAE,CAAA;iBACf;YACH,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACxB,WAAW;gBACX,OAAO,CAAC,OAAO,EAAE,CAAA;YACnB,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AACD,kBAAe,QAAQ,CAAA","file":"AdbUtils.js","sourcesContent":["import { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport * as adbMiwt from '@miwt/adb'\nimport adbCommander from 'adb-commander'\n\n/**\n * AdbUtils\n */\nclass AdbUtils {\n // 连接设备\n static async connect(ip: string, port: string) {\n const adbConnet = await adbMiwt.execAdbCmdAsync(`adb connect ${ip}:${port}`)\n return adbConnet.indexOf('connected to') >= 0\n }\n // 获取所有已连接的设备(包含无线连接设备)\n static async getAllConnectedDevices() {\n const res = await adbMiwt.getAdbDevices()\n return res.map(({ sn }) => sn)\n }\n // 获取USB连接的设备\n static async getUSBConnectedDevices() {\n const res = await adbCommander.deviceList()\n return res.deviceList\n }\n // 安装设备\n static async installApk(sn: string, apkPath: string) {\n const result = await adbMiwt.installApk(sn, apkPath)\n return result\n }\n // 启动调试器\n static async startDebugger(deviceSn: string) {\n const adbShell = adbMiwt.execAdbCmd(\n `adb -s ${deviceSn} shell am start -n \"org.hapjs.debugger/.MainActivity\"`\n )\n adbShell.stdout.on('data', (data: string) => {\n // 监听stderr事件,获取输出内容\n ColorConsole.log({\n message: data\n })\n })\n adbShell.stderr.on('data', (data: string) => {\n // 监听stderr事件,获取输出内容\n if (data.indexOf('Error') >= 0) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: data\n })\n process.exit()\n }\n })\n adbShell.on('close', () => {\n // 处理命令正常结束\n Promise.resolve()\n })\n }\n}\nexport default AdbUtils\n"],"sourceRoot":"../../src"}
@@ -0,0 +1,62 @@
1
+ import { IGetAvailablePlatform, IInstallApkAndDbg } from '../interface/CommandInterface';
2
+ /**
3
+ * DeviceUtil
4
+ */
5
+ declare class DeviceUtil {
6
+ static ipRegExp: RegExp;
7
+ static CLIENT_PORT: number;
8
+ static quickapp_url: string;
9
+ /**
10
+ * 获取连接上的所有设备数组,供IDE使用
11
+ * @returns
12
+ */
13
+ static getAllConnectedDevices(): Promise<string[]>;
14
+ /**
15
+ * 安装调试器、预览版
16
+ * @param options
17
+ * @returns
18
+ */
19
+ static installDbgAndMkp(options: IInstallApkAndDbg): Promise<string>;
20
+ /**
21
+ * 如果是TV等AIOT设备,需要通过IP连接
22
+ * 1. 若ip为空,则询问是否要连接新设备
23
+ * 2. 无需连接新设备,返回
24
+ * 3. 连接新设备,输入ip值(可输入多个ip,以逗号隔断)
25
+ * 4. 判断输入值,空则输出info并返回
26
+ * 5. 处理ip,输入每个ip设备的端口号,尝试连接,给出连接结果
27
+ * @param ip
28
+ */
29
+ static connectDevice(ip: string): Promise<void>;
30
+ /**
31
+ * 选择一个或者多个设备
32
+ * @param deviceList
33
+ * @param orderText
34
+ * @returns
35
+ */
36
+ static queryDevice(deviceList: string[] | undefined, orderText?: string): Promise<string[] | undefined>;
37
+ /**
38
+ * 下载apk
39
+ * @param options
40
+ * @param isQuickAppDebugger
41
+ * @returns
42
+ */
43
+ static downloadApk(options: IInstallApkAndDbg, isQuickAppDebugger: boolean): Promise<string>;
44
+ /**
45
+ * 获取设备上的快应用框架(需要先安装调试器)
46
+ * 1. 请求获取平台信息
47
+ * 2. 若获取结果为空或者undefined,则等待3s再次请求
48
+ * 3. 若获取结果不为空,但属性availablePlatforms为空,则等待3s再次请求
49
+ * 4. 若请求次数超过3次,则结束请求
50
+ * 5. 否则打印获取结果
51
+ * @param options
52
+ */
53
+ static getAvailablePlatform(options: IGetAvailablePlatform): Promise<void>;
54
+ /**
55
+ * 给设备列表中的每个设备安装apk
56
+ * @param deviceList
57
+ * @param apkPath
58
+ * @returns
59
+ */
60
+ static installApk(deviceList: string[] | undefined, apkPath: string): Promise<void>;
61
+ }
62
+ export default DeviceUtil;