aiot-toolkit 2.0.1-alpha.4 → 2.0.1-alpha.6

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/lib/bin.js CHANGED
@@ -14,14 +14,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  const commander_1 = require("@aiot-toolkit/commander");
17
- const emulator_1 = require("@aiot-toolkit/emulator");
18
17
  const shared_utils_1 = require("@aiot-toolkit/shared-utils");
19
18
  const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
20
19
  const create_aiot_1 = require("create-aiot");
21
- const os_1 = __importDefault(require("os"));
22
- const path_1 = __importDefault(require("path"));
23
20
  const UxBuilder_1 = __importDefault(require("./builder/UxBuilder"));
24
21
  const XtsBuilder_1 = __importDefault(require("./builder/XtsBuilder"));
22
+ const GoldfishStarter_1 = __importDefault(require("./starter/GoldfishStarter"));
25
23
  const DeviceUtil_1 = __importDefault(require("./utils/DeviceUtil"));
26
24
  const VelaAvdUtils_1 = __importDefault(require("./utils/VelaAvdUtils"));
27
25
  const waiter_1 = __importDefault(require("./waiter"));
@@ -68,81 +66,6 @@ function build(command, description) {
68
66
  })
69
67
  };
70
68
  }
71
- function start(command, description) {
72
- const avdList = VelaAvdUtils_1.default.velaAvdCls.getVelaAvdList();
73
- if (avdList.length === 0) {
74
- ColorConsole_1.default.log({
75
- level: shared_utils_1.LOG_LEVEL.Error,
76
- message: 'No emulator available, please create it first.',
77
- isOnlyPrintError: true
78
- });
79
- VelaAvdUtils_1.default.createVelaAvdByInquire();
80
- return { name: command, description, paramList: [], action: (option) => __awaiter(this, void 0, void 0, function* () { }) };
81
- }
82
- return {
83
- name: command,
84
- description,
85
- paramList: [
86
- {
87
- name: 'avdname',
88
- description: 'name of the avd to start',
89
- type: 'select',
90
- choices: avdList.map((item) => {
91
- return { value: item.avdName };
92
- }),
93
- enableInquirer: true
94
- },
95
- {
96
- name: 'devtool',
97
- description: 'source map config'
98
- },
99
- {
100
- name: 'disableNSH',
101
- description: 'disable goldfish NSH terminal',
102
- defaultValue: false,
103
- type: 'confirm'
104
- }
105
- ],
106
- action: (option) => __awaiter(this, void 0, void 0, function* () {
107
- const goldfishInstance = new emulator_1.GoldfishInstance({
108
- sdkHome: path_1.default.resolve(os_1.default.homedir(), '.export'),
109
- avdHome: path_1.default.resolve(os_1.default.homedir(), '.android/avd'),
110
- projectPath: process.cwd()
111
- });
112
- const startOptions = {
113
- avdName: option.avdname,
114
- devtool: option.devtool,
115
- disableNSH: option.disableNSH
116
- };
117
- goldfishInstance.start(startOptions);
118
- // waiter
119
- const startWaiter = new commander_1.PersistentCommand({
120
- description: 'aiot-toolkit start 的常驻命令',
121
- options: [
122
- {
123
- key: 'r',
124
- description: `重启快应用 ${option.disableNSH ? '' : '(需要手动关闭模拟器)'}`,
125
- action() {
126
- console.log('重启中......');
127
- goldfishInstance.stop();
128
- goldfishInstance.start(startOptions);
129
- }
130
- },
131
- {
132
- key: '?',
133
- description: '显示所有命令',
134
- action() {
135
- startWaiter.clearLog();
136
- startWaiter.describe();
137
- }
138
- }
139
- ]
140
- });
141
- startWaiter.describe();
142
- startWaiter.start();
143
- })
144
- };
145
- }
146
69
  function main() {
147
70
  return __awaiter(this, void 0, void 0, function* () {
148
71
  const aiotCreate = yield (0, create_aiot_1.getAiotCreateCommand)();
@@ -152,7 +75,7 @@ function main() {
152
75
  version: '2.0.1',
153
76
  commandList: [
154
77
  build('build', 'build project'),
155
- start('start', 'start project in goldfish'),
78
+ new GoldfishStarter_1.default('start', 'start project').getParamList(),
156
79
  {
157
80
  name: 'getConnectedDevices',
158
81
  description: 'get all connected devices',
package/lib/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["bin.ts"],"names":[],"mappings":"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","file":"bin.js","sourcesContent":["#!/usr/bin/env node\n\nimport { Command, ICommand, IProgram, PersistentCommand } from '@aiot-toolkit/commander'\nimport { GoldfishInstance } from '@aiot-toolkit/emulator'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { getAiotCreateCommand } from 'create-aiot'\nimport os from 'os'\nimport path from 'path'\nimport IBuilder from './builder/IBuilder'\nimport UxBuilder from './builder/UxBuilder'\nimport XtsBuilder from './builder/XtsBuilder'\nimport DeviceUtil from './utils/DeviceUtil'\nimport VelaAvdUtil from './utils/VelaAvdUtils'\nimport waiter from './waiter'\n// 配置支持的 builder 类型,新增的项目类型,只需在此处加上类型\nconst builderTypeList = [UxBuilder, XtsBuilder]\n\nfunction findBuilder(projectPath: string): IBuilder | undefined {\n for (const item of builderTypeList) {\n const instance = new item()\n if (instance.match(projectPath)) {\n return instance\n }\n }\n return new UxBuilder()\n}\n\nfunction build(command: string, description: string): ICommand {\n const projectPath = process.cwd()\n const builder = findBuilder(projectPath)\n const paramList = builder?.params\n\n return {\n name: command,\n description,\n paramList,\n action: async (option: any) => {\n // 获取对应的 build;如果存在,执行 build 函数,不存在,提示\n const projectPath = process.cwd()\n const builder = findBuilder(projectPath)\n if (builder) {\n const { watch } = option\n await builder.build(projectPath, option)\n if (watch) {\n waiter.describe()\n waiter.start()\n }\n } else {\n ColorConsole.log({\n message: `This type of project is not currently supported. The supported projects are: ${builderTypeList\n .map((item) => item.PROJECT_TYPE)\n .join('、')}`,\n level: LOG_LEVEL.Error,\n isOnlyPrintError: true\n })\n }\n }\n }\n}\n\nfunction start(command: string, description: string): ICommand {\n const avdList = VelaAvdUtil.velaAvdCls.getVelaAvdList()\n if (avdList.length === 0) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: 'No emulator available, please create it first.',\n isOnlyPrintError: true\n })\n VelaAvdUtil.createVelaAvdByInquire()\n return { name: command, description, paramList: [], action: async (option: any) => {} }\n }\n return {\n name: command,\n description,\n paramList: [\n {\n name: 'avdname',\n description: 'name of the avd to start',\n type: 'select',\n choices: avdList.map((item) => {\n return { value: item.avdName }\n }),\n enableInquirer: true\n },\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 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 = {\n avdName: option.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}\n\nasync function main() {\n const aiotCreate = await getAiotCreateCommand()\n const config: IProgram = {\n name: 'aiot-toolkit',\n description: 'contains build, dev, release, etc. commands for aiot toolkit',\n version: '2.0.1',\n commandList: [\n build('build', 'build project'),\n start('start', 'start project in goldfish'),\n {\n name: 'getConnectedDevices',\n description: 'get all connected devices',\n action: async (option) => {\n try {\n const connectedDevices = await DeviceUtil.getAllConnectedDevices()\n ColorConsole.log({\n message: `The connected devices are: ${\n connectedDevices ? connectedDevices.join(', ') : 'null'\n }`\n })\n } catch (error) {\n ColorConsole.log({ message: (error as Error).message, level: LOG_LEVEL.Error })\n }\n }\n },\n {\n name: 'getPlatforms',\n description: 'get available platform(s) on selected device',\n paramList: [\n {\n name: 'ip',\n description: 'device ip(eg 127.0.0.1)',\n type: 'string',\n enableInquirer: true\n },\n {\n name: 'port',\n description: 'device port(eg 39517)',\n type: 'string',\n enableInquirer: true\n },\n {\n name: 'sn',\n description:\n 'view the serial number of the connected device through the \"adb devices\" command, if it is a device connected via wifi, the format is \"ip address:5555\"',\n type: 'string',\n enableInquirer: true\n }\n ],\n action: async (option) => {\n await DeviceUtil.getAvailablePlatform(option)\n }\n },\n {\n name: 'installDbgAndMkp',\n description: 'install \"org.hapjs.debugger\" & \"org.hapjs.mockup\" ',\n paramList: [\n {\n name: 'ip',\n description: 'device ip(eg 127.0.0.1)',\n type: 'string'\n },\n {\n name: 'port',\n description: 'device ip(eg 5555)',\n type: 'string'\n }\n ],\n action: async (option) => {\n try {\n const successMessage = await DeviceUtil.installDbgAndMkp(option)\n ColorConsole.log({ message: successMessage, level: LOG_LEVEL.Success })\n } catch (error) {\n ColorConsole.log({ message: (error as Error).message, level: LOG_LEVEL.Error })\n }\n }\n },\n {\n name: 'createVelaAvd',\n description: 'create a vela avd instance',\n action: async () => {\n VelaAvdUtil.createVelaAvdByInquire()\n }\n },\n {\n ...aiotCreate,\n name: 'create',\n description: 'create aiot project'\n }\n ]\n }\n Command.registeProgram(config)\n}\nmain()\n"],"sourceRoot":"../src"}
1
+ {"version":3,"sources":["bin.ts"],"names":[],"mappings":"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","file":"bin.js","sourcesContent":["#!/usr/bin/env node\n\nimport { Command, ICommand, IProgram } from '@aiot-toolkit/commander'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { getAiotCreateCommand } from 'create-aiot'\nimport IBuilder from './builder/IBuilder'\nimport UxBuilder from './builder/UxBuilder'\nimport XtsBuilder from './builder/XtsBuilder'\nimport GoldfishStarter from './starter/GoldfishStarter'\nimport DeviceUtil from './utils/DeviceUtil'\nimport VelaAvdUtil from './utils/VelaAvdUtils'\nimport waiter from './waiter'\n// 配置支持的 builder 类型,新增的项目类型,只需在此处加上类型\nconst builderTypeList = [UxBuilder, XtsBuilder]\n\nfunction findBuilder(projectPath: string): IBuilder | undefined {\n for (const item of builderTypeList) {\n const instance = new item()\n if (instance.match(projectPath)) {\n return instance\n }\n }\n return new UxBuilder()\n}\n\nfunction build(command: string, description: string): ICommand {\n const projectPath = process.cwd()\n const builder = findBuilder(projectPath)\n const paramList = builder?.params\n\n return {\n name: command,\n description,\n paramList,\n action: async (option: any) => {\n // 获取对应的 build;如果存在,执行 build 函数,不存在,提示\n const projectPath = process.cwd()\n const builder = findBuilder(projectPath)\n if (builder) {\n const { watch } = option\n await builder.build(projectPath, option)\n if (watch) {\n waiter.describe()\n waiter.start()\n }\n } else {\n ColorConsole.log({\n message: `This type of project is not currently supported. The supported projects are: ${builderTypeList\n .map((item) => item.PROJECT_TYPE)\n .join('、')}`,\n level: LOG_LEVEL.Error,\n isOnlyPrintError: true\n })\n }\n }\n }\n}\n\nasync function main() {\n const aiotCreate = await getAiotCreateCommand()\n const config: IProgram = {\n name: 'aiot-toolkit',\n description: 'contains build, dev, release, etc. commands for aiot toolkit',\n version: '2.0.1',\n commandList: [\n build('build', 'build project'),\n new GoldfishStarter('start', 'start project').getParamList(),\n {\n name: 'getConnectedDevices',\n description: 'get all connected devices',\n action: async (option) => {\n try {\n const connectedDevices = await DeviceUtil.getAllConnectedDevices()\n ColorConsole.log({\n message: `The connected devices are: ${\n connectedDevices ? connectedDevices.join(', ') : 'null'\n }`\n })\n } catch (error) {\n ColorConsole.log({ message: (error as Error).message, level: LOG_LEVEL.Error })\n }\n }\n },\n {\n name: 'getPlatforms',\n description: 'get available platform(s) on selected device',\n paramList: [\n {\n name: 'ip',\n description: 'device ip(eg 127.0.0.1)',\n type: 'string',\n enableInquirer: true\n },\n {\n name: 'port',\n description: 'device port(eg 39517)',\n type: 'string',\n enableInquirer: true\n },\n {\n name: 'sn',\n description:\n 'view the serial number of the connected device through the \"adb devices\" command, if it is a device connected via wifi, the format is \"ip address:5555\"',\n type: 'string',\n enableInquirer: true\n }\n ],\n action: async (option) => {\n await DeviceUtil.getAvailablePlatform(option)\n }\n },\n {\n name: 'installDbgAndMkp',\n description: 'install \"org.hapjs.debugger\" & \"org.hapjs.mockup\" ',\n paramList: [\n {\n name: 'ip',\n description: 'device ip(eg 127.0.0.1)',\n type: 'string'\n },\n {\n name: 'port',\n description: 'device ip(eg 5555)',\n type: 'string'\n }\n ],\n action: async (option) => {\n try {\n const successMessage = await DeviceUtil.installDbgAndMkp(option)\n ColorConsole.log({ message: successMessage, level: LOG_LEVEL.Success })\n } catch (error) {\n ColorConsole.log({ message: (error as Error).message, level: LOG_LEVEL.Error })\n }\n }\n },\n {\n name: 'createVelaAvd',\n description: 'create a vela avd instance',\n action: async () => {\n VelaAvdUtil.createVelaAvdByInquire()\n }\n },\n {\n ...aiotCreate,\n name: 'create',\n description: 'create aiot project'\n }\n ]\n }\n Command.registeProgram(config)\n}\nmain()\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":";;;;;;;;;;;;;;AAAA,uDAAqE;AACrE,qDAAoF;AACpF,6DAAsD;AACtD,+FAAsE;AACtE,+CAA0C;AAC1C,4CAAmB;AACnB,gDAAuB;AACvB,yEAAgD;AAEhD,MAAM,eAAe;IACnB,YACU,IAAY,EACZ,WAAmB;QADnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;IAEJ,YAAY;QACV,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,mBAAmB;iBACjC;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,+BAA+B;oBAC5C,YAAY,EAAE,KAAK;oBACnB,IAAI,EAAE,SAAS;iBAChB;aACF;YACD,MAAM,EAAE,CAAO,MAAW,EAAE,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACpB,CAAC,CAAA;SACF,CAAA;IACH,CAAC;IAEK,KAAK,CAAC,MAAW;;YACrB,MAAM,OAAO,GAAiB,sBAAY,CAAC,UAAU,CAAC,cAAc,EAAE,CAAA;YACtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,sBAAY,CAAC,GAAG,CAAC;oBACf,KAAK,EAAE,wBAAS,CAAC,KAAK;oBACtB,OAAO,EAAE,qDAAqD;oBAC9D,gBAAgB,EAAE,IAAI;iBACvB,CAAC,CAAA;gBACF,sBAAY,CAAC,sBAAsB,EAAE,CAAA;gBACrC,OAAM;aACP;YACD,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAM,EAAC;gBAC3B,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;gBAChC,CAAC,CAAC;aACH,CAAC,CAAA;YACF,MAAM,gBAAgB,GAAG,IAAI,2BAAgB,CAAC;gBAC5C,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;gBAC9C,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC;gBACnD,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;aAC3B,CAAC,CAAA;YACF,MAAM,YAAY,GAAkB;gBAClC,OAAO;gBACP,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAA;YACD,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACpC,SAAS;YACT,MAAM,WAAW,GAAsB,IAAI,6BAAiB,CAAC;gBAC3D,WAAW,EAAE,0BAA0B;gBACvC,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,GAAG;wBACR,WAAW,EAAE,SAAS,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE;wBAC9D,MAAM;4BACJ,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;4BACxB,gBAAgB,CAAC,IAAI,EAAE,CAAA;4BACvB,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;wBACtC,CAAC;qBACF;oBACD;wBACE,GAAG,EAAE,GAAG;wBACR,WAAW,EAAE,QAAQ;wBACrB,MAAM;4BACJ,WAAW,CAAC,QAAQ,EAAE,CAAA;4BACtB,WAAW,CAAC,QAAQ,EAAE,CAAA;wBACxB,CAAC;qBACF;iBACF;aACF,CAAC,CAAA;YACF,WAAW,CAAC,QAAQ,EAAE,CAAA;YACtB,WAAW,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;KAAA;CACF;AAED,kBAAe,eAAe,CAAA","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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["utils/VelaAvdUtils.ts"],"names":[],"mappings":"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","file":"VelaAvdUtils.js","sourcesContent":["import { IAvdArchType, VelaAvdCls } from '@aiot-toolkit/emulator'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { confirm, input, select } from '@inquirer/prompts'\nimport AdmZip from 'adm-zip'\nimport axios from 'axios'\nimport cliProgress from 'cli-progress'\nimport fs from 'fs-extra'\nimport os from 'os'\nimport path from 'path'\nimport { IGoldfishVersionInfo } from '../interface/VelaEmulatorInterface'\n\nclass VelaAvdUtils {\n static sdkHome = path.resolve(os.homedir(), '.export')\n static avdHome = path.resolve(os.homedir(), '.android', 'avd')\n static baseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide'\n static versionUrl = 'https://cdn.cnbj3-fusion.fds.api.mi-img.com/vela-ide/versions.json'\n static emulatorBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/emulator'\n static systemImageBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/system-images'\n static velaAvdCls = new VelaAvdCls({\n sdkHome: VelaAvdUtils.sdkHome,\n avdHome: VelaAvdUtils.avdHome\n })\n\n static validateAvdName(avdName: string) {\n if (!avdName) {\n return `Please enter avd name`\n }\n if (!avdName.startsWith('Vela')) {\n return 'The avd name must starts with Vela'\n }\n const avdDir = path.resolve(VelaAvdUtils.avdHome, `${avdName}.avd`)\n if (fs.existsSync(avdDir)) {\n return `The avd already exists. Please change avd name`\n }\n return true\n }\n\n /**\n * 从CDN上下载资源文件\n * @param downloadUrl 下载地址\n * @param targetDir 下载后的文件存放的目录\n * @param filename 下载文件的名称\n * @returns\n */\n static downloadFromCdn(downloadUrl: string, targetDir: string, filename: string) {\n return new Promise<void>(async (resolve, reject) => {\n fs.mkdirSync(targetDir, { recursive: true })\n const targetFile = path.resolve(targetDir, filename)\n const progress = new cliProgress.Bar({\n format: `downloading ${filename}| [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}`,\n clearOnComplete: true,\n stopOnComplete: true\n })\n progress.start(100, 0)\n try {\n const fwrite = fs.createWriteStream(targetFile)\n const response = await axios({\n method: 'get',\n url: downloadUrl,\n responseType: 'stream',\n onDownloadProgress(evt) {\n evt.total && progress.update((evt.loaded / evt.total) * 100)\n }\n })\n response.data.pipe(fwrite).on('close', () => {\n resolve()\n })\n } catch (e) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `download ${filename} failed`\n })\n progress.stop()\n reject()\n }\n })\n }\n /**\n * 下载zip文件并解压。会将zip里的所有文件解压至targetDir\n * @param downloadUrl 下载地址\n * @param targetDir 解压目录\n * @returns\n */\n static async downloadAndUnzip(downloadUrl: string, targetDir: string) {\n const filename = path.basename(downloadUrl)\n const targetFile = path.resolve(targetDir, filename)\n try {\n fs.mkdirSync(targetDir, { recursive: true })\n await VelaAvdUtils.downloadFromCdn(downloadUrl, targetDir, filename)\n fs.chmodSync(targetFile, 0o777)\n const zip = new AdmZip(targetFile)\n zip.extractAllTo(targetDir, true, true)\n fs.rmSync(targetFile)\n return Promise.resolve()\n } catch (e) {\n if (fs.existsSync(targetFile)) {\n fs.rmSync(targetFile)\n }\n return Promise.reject()\n }\n }\n\n /** 根据host获取模拟器下载地址 */\n static getEmulatorUrl(version: string = '0.0.1'): string {\n const systemOs = os.platform()\n const arch = os.arch()\n let hostOs = ''\n let hostArch = ''\n switch (systemOs) {\n case 'linux':\n hostOs = 'linux'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n break\n case 'win32':\n hostOs = 'windows'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n break\n case 'darwin':\n hostOs = 'darwin'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n default:\n break\n }\n return `${VelaAvdUtils.emulatorBaseUrl}/v${version}/${hostOs}-${hostArch}.zip`\n }\n\n /** 根据host获取vela镜像下载地址 */\n static getSystemImageUrl(version: string = '0.0.1', device: string = 'arm') {\n return `${VelaAvdUtils.systemImageBaseUrl}/v${version}/${device}/nuttx`\n }\n\n /** 根据host获取ya-vm-file-server下载地址 */\n static getv9fsToolUrl(version: string = '0.0.1') {\n const systemOs = os.platform()\n const arch = os.arch()\n let v9fsTool = ''\n switch(systemOs) {\n case 'linux':\n v9fsTool = 'ya-vm-file-server-linux-x86_64'\n break\n case 'win32':\n v9fsTool = 'ya-vm-file-server-windows.exe'\n break\n case 'darwin':\n v9fsTool = (arch === 'x64') ? 'ya-vm-file-server-darwin-x84_64' : 'ya-vm-file-server-darwin-aarch64'\n default: \n break\n }\n return `${VelaAvdUtils.baseUrl}/tools/v${version}/${v9fsTool}`\n }\n\n /** 获取资源文件下载地址 */\n static getDownloadUrl(file: string, version: string = '0.0.1') {\n return `${VelaAvdUtils.baseUrl}/${file}/v${version}/${file}.zip`;\n }\n\n /**\n * 命令行访问方式创建模拟器\n */\n static async createVelaAvdByInquire() {\n try {\n const versionFile = path.resolve(VelaAvdUtils.sdkHome, 'versions.json')\n const versionFileExist = fs.existsSync(versionFile)\n let versionInfo: IGoldfishVersionInfo | undefined = undefined\n if (versionFileExist) {\n versionInfo = fs.readJSONSync(versionFile)\n }\n // 下载version.json,保证每次下载的文件都是最新的版本\n await VelaAvdUtils.downloadFromCdn(VelaAvdUtils.versionUrl, VelaAvdUtils.sdkHome, 'online-version.json')\n const onlineVersionFile = path.resolve(VelaAvdUtils.sdkHome, 'online-version.json')\n const onlineVersionInfo: IGoldfishVersionInfo = fs.readJSONSync(onlineVersionFile)\n // avdName\n const avdName = await input({\n message: 'avd name starting with Vela. (eg. Vela_Virtual_Device)',\n default: 'Vela_Virtual_Device',\n validate(value: string) {\n return VelaAvdUtils.validateAvdName(value)\n }\n })\n // skin或者size\n const needSkin = await confirm({\n message: 'need avd skin?',\n default: true\n })\n const skinDir = path.resolve(VelaAvdUtils.sdkHome, 'skins')\n const skinExists = fs.existsSync(skinDir)\n let avdSkin = ''\n let avdWidth = ''\n let avdHeight = ''\n if (needSkin) {\n if (!skinExists || (versionInfo && versionInfo.skins < onlineVersionInfo.skins)) {\n const skinsUrl = VelaAvdUtils.getDownloadUrl('skins', onlineVersionInfo.skins)\n await VelaAvdUtils.downloadAndUnzip(skinsUrl, path.resolve(VelaAvdUtils.sdkHome, 'skins'))\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download skins succeed.`\n })\n }\n const skinList = VelaAvdUtils.velaAvdCls.getVelaSkinList()\n avdSkin = await select({\n message: 'avd skin.',\n choices: skinList.map((item: string) => {\n return {\n name: item,\n value: item,\n description: item\n }\n })\n })\n } else {\n avdWidth = await input({\n message: 'avd width.',\n default: '480'\n })\n avdHeight = await input({\n message: 'avd height.',\n default: '480'\n })\n }\n // 镜像,TODO:后续需要考虑多种设备的镜像\n const avdArch = (await select({\n message: 'vela image.',\n choices: [{ value: 'arm' }, { value: 'arm64' }]\n })) as IAvdArchType\n // 下载模拟器\n const emulatorDir = path.resolve(VelaAvdUtils.sdkHome, 'emulator')\n const emulatorExists = fs.existsSync(emulatorDir)\n if (!emulatorExists || (versionInfo && versionInfo.emulator < onlineVersionInfo.emulator)) {\n const emulatorDownloadUrl = VelaAvdUtils.getEmulatorUrl(onlineVersionInfo.emulator)\n await VelaAvdUtils.downloadAndUnzip(emulatorDownloadUrl, emulatorDir)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download emulator succeed.`\n })\n }\n // 下载镜像\n const velaImageDownloadUrl = this.getSystemImageUrl(onlineVersionInfo['system-images'], avdArch)\n const imageDir = path.resolve(VelaAvdUtils.sdkHome, 'system-images', avdArch)\n const imageExists = fs.existsSync(path.resolve(imageDir, 'nuttx'))\n if (\n !imageExists ||\n (versionInfo && versionInfo['system-images'] < onlineVersionInfo['system-images'])\n ) {\n await VelaAvdUtils.downloadFromCdn(velaImageDownloadUrl, imageDir, 'nuttx')\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download vela image succeed.`\n })\n }\n // 下载快应用qa文件\n const qaDir = path.resolve(VelaAvdUtils.sdkHome, 'qa')\n const qaExists = fs.existsSync(qaDir)\n if (!qaExists || (versionInfo && versionInfo.qa < onlineVersionInfo.qa)) {\n const qaUrl = VelaAvdUtils.getDownloadUrl('qa', onlineVersionInfo.qa)\n await VelaAvdUtils.downloadAndUnzip(qaUrl, qaDir)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download quickapp font succeed.`\n })\n }\n // 下载tools\n const toolsDir = path.resolve(VelaAvdUtils.sdkHome, 'tools')\n const toolsExists = fs.existsSync(toolsDir)\n if (!toolsExists || (versionInfo && versionInfo.tools < onlineVersionInfo.tools)) { \n const v9fsToolUrl = VelaAvdUtils.getv9fsToolUrl()\n const filename = (os.platform() === 'win32') ? 'ya-vm-file-server.exe' : 'ya-vm-file-server'\n await VelaAvdUtils.downloadFromCdn(v9fsToolUrl, toolsDir, filename)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download tools succeed.`\n })\n }\n // 替换version.json\n if (versionFileExist) {\n fs.rmSync(versionFile)\n }\n fs.renameSync(onlineVersionFile, versionFile)\n // 创建avd文本文件\n const avdImagePath = imageDir\n const avdParams = { avdName, avdSkin, avdWidth, avdHeight, avdArch, avdImagePath }\n VelaAvdUtils.velaAvdCls.createVelaAvd(avdParams)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `create avd succeed.`\n })\n } catch (e) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `create avd failed. Error: ${(e as Error).message}`\n })\n }\n }\n}\n\nexport default VelaAvdUtils\n"],"sourceRoot":"../../src"}
1
+ {"version":3,"sources":["utils/VelaAvdUtils.ts"],"names":[],"mappings":"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","file":"VelaAvdUtils.js","sourcesContent":["import { IAvdArchType, VelaAvdCls } from '@aiot-toolkit/emulator'\nimport { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { confirm, input, select } from '@inquirer/prompts'\nimport AdmZip from 'adm-zip'\nimport axios from 'axios'\nimport cliProgress from 'cli-progress'\nimport fs from 'fs-extra'\nimport os from 'os'\nimport path from 'path'\nimport { IGoldfishVersionInfo } from '../interface/VelaEmulatorInterface'\n\nclass VelaAvdUtils {\n static sdkHome = path.resolve(os.homedir(), '.export')\n static avdHome = path.resolve(os.homedir(), '.android', 'avd')\n static baseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide'\n static versionUrl = 'https://cdn.cnbj3-fusion.fds.api.mi-img.com/vela-ide/versions.json'\n static emulatorBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/emulator'\n static systemImageBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/system-images'\n static velaAvdCls: VelaAvdCls = new VelaAvdCls({\n sdkHome: VelaAvdUtils.sdkHome,\n avdHome: VelaAvdUtils.avdHome\n })\n\n static validateAvdName(avdName: string) {\n if (!avdName) {\n return `Please enter avd name`\n }\n if (!avdName.startsWith('Vela')) {\n return 'The avd name must starts with Vela'\n }\n const avdDir = path.resolve(VelaAvdUtils.avdHome, `${avdName}.avd`)\n if (fs.existsSync(avdDir)) {\n return `The avd already exists. Please change avd name`\n }\n return true\n }\n\n /**\n * 从CDN上下载资源文件\n * @param downloadUrl 下载地址\n * @param targetDir 下载后的文件存放的目录\n * @param filename 下载文件的名称\n * @returns\n */\n static downloadFromCdn(downloadUrl: string, targetDir: string, filename: string) {\n return new Promise<void>(async (resolve, reject) => {\n fs.mkdirSync(targetDir, { recursive: true })\n const targetFile = path.resolve(targetDir, filename)\n const progress = new cliProgress.Bar({\n format: `downloading ${filename}| [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}`,\n clearOnComplete: true,\n stopOnComplete: true\n })\n progress.start(100, 0)\n try {\n const fwrite = fs.createWriteStream(targetFile)\n const response = await axios({\n method: 'get',\n url: downloadUrl,\n responseType: 'stream',\n onDownloadProgress(evt) {\n evt.total && progress.update((evt.loaded / evt.total) * 100)\n }\n })\n response.data.pipe(fwrite).on('close', () => {\n resolve()\n })\n } catch (e) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `download ${filename} failed`\n })\n progress.stop()\n reject()\n }\n })\n }\n /**\n * 下载zip文件并解压。会将zip里的所有文件解压至targetDir\n * @param downloadUrl 下载地址\n * @param targetDir 解压目录\n * @returns\n */\n static async downloadAndUnzip(downloadUrl: string, targetDir: string) {\n const filename = path.basename(downloadUrl)\n const targetFile = path.resolve(targetDir, filename)\n try {\n fs.mkdirSync(targetDir, { recursive: true })\n await VelaAvdUtils.downloadFromCdn(downloadUrl, targetDir, filename)\n fs.chmodSync(targetFile, 0o777)\n const zip = new AdmZip(targetFile)\n zip.extractAllTo(targetDir, true, true)\n fs.rmSync(targetFile)\n return Promise.resolve()\n } catch (e) {\n if (fs.existsSync(targetFile)) {\n fs.rmSync(targetFile)\n }\n return Promise.reject()\n }\n }\n\n /** 根据host获取模拟器下载地址 */\n static getEmulatorUrl(version: string = '0.0.1'): string {\n const systemOs = os.platform()\n const arch = os.arch()\n let hostOs = ''\n let hostArch = ''\n switch (systemOs) {\n case 'linux':\n hostOs = 'linux'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n break\n case 'win32':\n hostOs = 'windows'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n break\n case 'darwin':\n hostOs = 'darwin'\n hostArch = arch === 'x64' ? 'x86_64' : 'aarch64'\n default:\n break\n }\n return `${VelaAvdUtils.emulatorBaseUrl}/v${version}/${hostOs}-${hostArch}.zip`\n }\n\n /** 根据host获取vela镜像下载地址 */\n static getSystemImageUrl(version: string = '0.0.1', device: string = 'arm') {\n return `${VelaAvdUtils.systemImageBaseUrl}/v${version}/${device}/nuttx`\n }\n\n /** 根据host获取ya-vm-file-server下载地址 */\n static getv9fsToolUrl(version: string = '0.0.1') {\n const systemOs = os.platform()\n const arch = os.arch()\n let v9fsTool = ''\n switch(systemOs) {\n case 'linux':\n v9fsTool = 'ya-vm-file-server-linux-x86_64'\n break\n case 'win32':\n v9fsTool = 'ya-vm-file-server-windows.exe'\n break\n case 'darwin':\n v9fsTool = (arch === 'x64') ? 'ya-vm-file-server-darwin-x84_64' : 'ya-vm-file-server-darwin-aarch64'\n default: \n break\n }\n return `${VelaAvdUtils.baseUrl}/tools/v${version}/${v9fsTool}`\n }\n\n /** 获取资源文件下载地址 */\n static getDownloadUrl(file: string, version: string = '0.0.1') {\n return `${VelaAvdUtils.baseUrl}/${file}/v${version}/${file}.zip`;\n }\n\n /**\n * 命令行访问方式创建模拟器\n */\n static async createVelaAvdByInquire() {\n try {\n const versionFile = path.resolve(VelaAvdUtils.sdkHome, 'versions.json')\n const versionFileExist = fs.existsSync(versionFile)\n let versionInfo: IGoldfishVersionInfo | undefined = undefined\n if (versionFileExist) {\n versionInfo = fs.readJSONSync(versionFile)\n }\n // 下载version.json,保证每次下载的文件都是最新的版本\n await VelaAvdUtils.downloadFromCdn(VelaAvdUtils.versionUrl, VelaAvdUtils.sdkHome, 'online-version.json')\n const onlineVersionFile = path.resolve(VelaAvdUtils.sdkHome, 'online-version.json')\n const onlineVersionInfo: IGoldfishVersionInfo = fs.readJSONSync(onlineVersionFile)\n // avdName\n const avdName = await input({\n message: 'avd name starting with Vela. (eg. Vela_Virtual_Device)',\n default: 'Vela_Virtual_Device',\n validate(value: string) {\n return VelaAvdUtils.validateAvdName(value)\n }\n })\n // skin或者size\n const needSkin = await confirm({\n message: 'need avd skin?',\n default: true\n })\n const skinDir = path.resolve(VelaAvdUtils.sdkHome, 'skins')\n const skinExists = fs.existsSync(skinDir)\n let avdSkin = ''\n let avdWidth = ''\n let avdHeight = ''\n if (needSkin) {\n if (!skinExists || (versionInfo && versionInfo.skins < onlineVersionInfo.skins)) {\n const skinsUrl = VelaAvdUtils.getDownloadUrl('skins', onlineVersionInfo.skins)\n await VelaAvdUtils.downloadAndUnzip(skinsUrl, path.resolve(VelaAvdUtils.sdkHome, 'skins'))\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download skins succeed.`\n })\n }\n const skinList = VelaAvdUtils.velaAvdCls.getVelaSkinList()\n avdSkin = await select({\n message: 'avd skin.',\n choices: skinList.map((item: string) => {\n return {\n name: item,\n value: item,\n description: item\n }\n })\n })\n } else {\n avdWidth = await input({\n message: 'avd width.',\n default: '480'\n })\n avdHeight = await input({\n message: 'avd height.',\n default: '480'\n })\n }\n // 镜像,TODO:后续需要考虑多种设备的镜像\n const avdArch = (await select({\n message: 'vela image.',\n choices: [{ value: 'arm' }, { value: 'arm64' }]\n })) as IAvdArchType\n // 下载模拟器\n const emulatorDir = path.resolve(VelaAvdUtils.sdkHome, 'emulator')\n const emulatorExists = fs.existsSync(emulatorDir)\n if (!emulatorExists || (versionInfo && versionInfo.emulator < onlineVersionInfo.emulator)) {\n const emulatorDownloadUrl = VelaAvdUtils.getEmulatorUrl(onlineVersionInfo.emulator)\n await VelaAvdUtils.downloadAndUnzip(emulatorDownloadUrl, emulatorDir)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download emulator succeed.`\n })\n }\n // 下载镜像\n const velaImageDownloadUrl = this.getSystemImageUrl(onlineVersionInfo['system-images'], avdArch)\n const imageDir = path.resolve(VelaAvdUtils.sdkHome, 'system-images', avdArch)\n const imageExists = fs.existsSync(path.resolve(imageDir, 'nuttx'))\n if (\n !imageExists ||\n (versionInfo && versionInfo['system-images'] < onlineVersionInfo['system-images'])\n ) {\n await VelaAvdUtils.downloadFromCdn(velaImageDownloadUrl, imageDir, 'nuttx')\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download vela image succeed.`\n })\n }\n // 下载快应用qa文件\n const qaDir = path.resolve(VelaAvdUtils.sdkHome, 'qa')\n const qaExists = fs.existsSync(qaDir)\n if (!qaExists || (versionInfo && versionInfo.qa < onlineVersionInfo.qa)) {\n const qaUrl = VelaAvdUtils.getDownloadUrl('qa', onlineVersionInfo.qa)\n await VelaAvdUtils.downloadAndUnzip(qaUrl, qaDir)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download quickapp font succeed.`\n })\n }\n // 下载tools\n const toolsDir = path.resolve(VelaAvdUtils.sdkHome, 'tools')\n const toolsExists = fs.existsSync(toolsDir)\n if (!toolsExists || (versionInfo && versionInfo.tools < onlineVersionInfo.tools)) { \n const v9fsToolUrl = VelaAvdUtils.getv9fsToolUrl()\n const filename = (os.platform() === 'win32') ? 'ya-vm-file-server.exe' : 'ya-vm-file-server'\n await VelaAvdUtils.downloadFromCdn(v9fsToolUrl, toolsDir, filename)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `download tools succeed.`\n })\n }\n // 替换version.json\n if (versionFileExist) {\n fs.rmSync(versionFile)\n }\n fs.renameSync(onlineVersionFile, versionFile)\n // 创建avd文本文件\n const avdImagePath = imageDir\n const avdParams = { avdName, avdSkin, avdWidth, avdHeight, avdArch, avdImagePath }\n VelaAvdUtils.velaAvdCls.createVelaAvd(avdParams)\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `create avd succeed.`\n })\n } catch (e) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `create avd failed. Error: ${(e as Error).message}`\n })\n }\n }\n}\n\nexport default VelaAvdUtils\n"],"sourceRoot":"../../src"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiot-toolkit",
3
- "version": "2.0.1-alpha.4",
3
+ "version": "2.0.1-alpha.6",
4
4
  "description": "Tools for creating, developing, and packaging aiot applications.",
5
5
  "keywords": [
6
6
  "aiot"
@@ -25,18 +25,18 @@
25
25
  "test": "node ./__tests__/aiot-toolkit.test.js"
26
26
  },
27
27
  "dependencies": {
28
- "@aiot-toolkit/emulator": "2.0.1-alpha.4",
29
- "@aiot-toolkit/shared-utils": "2.0.1-alpha.4",
28
+ "@aiot-toolkit/emulator": "2.0.1-alpha.6",
29
+ "@aiot-toolkit/shared-utils": "2.0.1-alpha.6",
30
30
  "@miwt/adb": "^0.7.1",
31
31
  "adb-commander": "^0.1.9",
32
32
  "adm-zip": "^0.5.10",
33
33
  "axios": "^1.5.0",
34
34
  "cli-progress": "^3.12.0",
35
- "create-aiot": "2.0.1-alpha.4",
35
+ "create-aiot": "2.0.1-alpha.6",
36
36
  "fast-glob": "^3.3.2"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/adm-zip": "^0.5.4"
40
40
  },
41
- "gitHead": "da4d5ab15aa1b8bcde3250a58d6e9a50e098cc20"
41
+ "gitHead": "1dcfd38a45553b5bccbcc5ad1f63f164ee798e4a"
42
42
  }