aiot-toolkit 2.0.1-alpha.9 → 2.0.2-beta.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.
- package/README.md +32 -29
- package/lib/bin.js +95 -41
- package/lib/builder/IBuilder.js +0 -2
- package/lib/builder/UxBuilder.d.ts +1 -0
- package/lib/builder/UxBuilder.js +41 -15
- package/lib/builder/XtsBuilder.js +30 -12
- package/lib/interface/CommandInterface.js +0 -2
- package/lib/interface/VelaEmulatorInterface.d.ts +6 -1
- package/lib/interface/VelaEmulatorInterface.js +0 -2
- package/lib/starter/IStarter.d.ts +23 -0
- package/lib/starter/IStarter.js +39 -0
- package/lib/starter/UxStarter.d.ts +10 -0
- package/lib/starter/UxStarter.js +139 -0
- package/lib/starter/XtsStarter.d.ts +9 -0
- package/lib/starter/XtsStarter.js +19 -0
- package/lib/utils/AdbUtils.js +2 -11
- package/lib/utils/DeviceUtil.d.ts +1 -1
- package/lib/utils/DeviceUtil.js +22 -93
- package/lib/utils/RequestUtils.js +4 -19
- package/lib/utils/UxBuilderUtils.d.ts +8 -0
- package/lib/utils/UxBuilderUtils.js +51 -0
- package/lib/utils/VelaAvdUtils.d.ts +8 -2
- package/lib/utils/VelaAvdUtils.js +54 -79
- package/lib/waiter.js +0 -2
- package/package.json +13 -11
- package/lib/bin.js.map +0 -1
- package/lib/builder/IBuilder.js.map +0 -1
- package/lib/builder/UxBuilder.js.map +0 -1
- package/lib/builder/XtsBuilder.js.map +0 -1
- package/lib/interface/CommandInterface.js.map +0 -1
- package/lib/interface/VelaEmulatorInterface.js.map +0 -1
- package/lib/starter/GoldfishStarter.d.ts +0 -9
- package/lib/starter/GoldfishStarter.js +0 -108
- package/lib/starter/GoldfishStarter.js.map +0 -1
- package/lib/utils/AdbUtils.js.map +0 -1
- package/lib/utils/DeviceUtil.js.map +0 -1
- package/lib/utils/RequestUtils.js.map +0 -1
- package/lib/utils/VelaAvdUtils.js.map +0 -1
- package/lib/waiter.js.map +0 -1
|
@@ -13,7 +13,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const emulator_1 = require("@aiot-toolkit/emulator");
|
|
16
|
-
const
|
|
16
|
+
const constants_1 = require("@aiot-toolkit/emulator/lib/static/constants");
|
|
17
|
+
const utils_1 = require("@aiot-toolkit/emulator/lib/utils");
|
|
17
18
|
const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
|
|
18
19
|
const prompts_1 = require("@inquirer/prompts");
|
|
19
20
|
const adm_zip_1 = __importDefault(require("adm-zip"));
|
|
@@ -68,11 +69,7 @@ class VelaAvdUtils {
|
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
catch (e) {
|
|
71
|
-
ColorConsole_1.default.
|
|
72
|
-
level: shared_utils_1.LOG_LEVEL.Error,
|
|
73
|
-
message: `download ${filename} failed`
|
|
74
|
-
});
|
|
75
|
-
progress.stop();
|
|
72
|
+
ColorConsole_1.default.throw(`Download ${filename} failed`);
|
|
76
73
|
reject();
|
|
77
74
|
}
|
|
78
75
|
}));
|
|
@@ -107,52 +104,47 @@ class VelaAvdUtils {
|
|
|
107
104
|
/** 根据host获取模拟器下载地址 */
|
|
108
105
|
static getEmulatorUrl(version = '0.0.1') {
|
|
109
106
|
const systemOs = os_1.default.platform();
|
|
110
|
-
const
|
|
111
|
-
let hostOs = '';
|
|
112
|
-
let hostArch = '';
|
|
113
|
-
switch (systemOs) {
|
|
114
|
-
case 'linux':
|
|
115
|
-
hostOs = 'linux';
|
|
116
|
-
hostArch = arch === 'x64' ? 'x86_64' : 'aarch64';
|
|
117
|
-
break;
|
|
118
|
-
case 'win32':
|
|
119
|
-
hostOs = 'windows';
|
|
120
|
-
hostArch = arch === 'x64' ? 'x86_64' : 'aarch64';
|
|
121
|
-
break;
|
|
122
|
-
case 'darwin':
|
|
123
|
-
hostOs = 'darwin';
|
|
124
|
-
hostArch = arch === 'x64' ? 'x86_64' : 'aarch64';
|
|
125
|
-
default:
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
107
|
+
const hostArch = (0, utils_1.getSystemArch)();
|
|
108
|
+
let hostOs = systemOs === 'win32' ? 'windows' : systemOs;
|
|
128
109
|
return `${VelaAvdUtils.emulatorBaseUrl}/v${version}/${hostOs}-${hostArch}.zip`;
|
|
129
110
|
}
|
|
130
111
|
/** 根据host获取vela镜像下载地址 */
|
|
131
|
-
static getSystemImageUrl(version = '
|
|
132
|
-
|
|
112
|
+
static getSystemImageUrl(version = 'vela-release-4.0') {
|
|
113
|
+
if (this.isReleaseVelaImage(version)) {
|
|
114
|
+
return `${VelaAvdUtils.systemImageBaseUrl}/${version}/image.zip`;
|
|
115
|
+
}
|
|
116
|
+
return `${VelaAvdUtils.systemImageBaseUrl}/${version}/nuttx`;
|
|
133
117
|
}
|
|
134
118
|
/** 根据host获取ya-vm-file-server下载地址 */
|
|
135
119
|
static getv9fsToolUrl(version = '0.0.1') {
|
|
136
120
|
const systemOs = os_1.default.platform();
|
|
137
|
-
const arch =
|
|
121
|
+
const arch = (0, utils_1.getSystemArch)();
|
|
138
122
|
let v9fsTool = '';
|
|
139
123
|
switch (systemOs) {
|
|
140
124
|
case 'linux':
|
|
141
|
-
v9fsTool =
|
|
125
|
+
v9fsTool = `ya-vm-file-server-linux-${arch}`;
|
|
142
126
|
break;
|
|
143
127
|
case 'win32':
|
|
144
128
|
v9fsTool = 'ya-vm-file-server-windows.exe';
|
|
145
129
|
break;
|
|
146
130
|
case 'darwin':
|
|
147
|
-
v9fsTool =
|
|
131
|
+
v9fsTool = `ya-vm-file-server-darwin-${arch}`;
|
|
148
132
|
default:
|
|
149
133
|
break;
|
|
150
134
|
}
|
|
151
135
|
return `${VelaAvdUtils.baseUrl}/tools/v${version}/${v9fsTool}`;
|
|
152
136
|
}
|
|
153
137
|
/** 获取资源文件下载地址 */
|
|
154
|
-
static getDownloadUrl(
|
|
155
|
-
return `${VelaAvdUtils.baseUrl}/${
|
|
138
|
+
static getDownloadUrl(dir, version = '0.0.1', filename = dir) {
|
|
139
|
+
return `${VelaAvdUtils.baseUrl}/${dir}/v${version}/${filename}.zip`;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 判断vela镜像是release版还是dev版
|
|
143
|
+
* @param velaImage 镜像名称或者镜像路径
|
|
144
|
+
* @returns
|
|
145
|
+
*/
|
|
146
|
+
static isReleaseVelaImage(velaImage) {
|
|
147
|
+
return velaImage.includes('release');
|
|
156
148
|
}
|
|
157
149
|
/**
|
|
158
150
|
* 命令行访问方式创建模拟器
|
|
@@ -166,10 +158,7 @@ class VelaAvdUtils {
|
|
|
166
158
|
if (versionFileExist) {
|
|
167
159
|
versionInfo = fs_extra_1.default.readJSONSync(versionFile);
|
|
168
160
|
}
|
|
169
|
-
|
|
170
|
-
yield VelaAvdUtils.downloadFromCdn(VelaAvdUtils.versionUrl, VelaAvdUtils.sdkHome, 'online-version.json');
|
|
171
|
-
const onlineVersionFile = path_1.default.resolve(VelaAvdUtils.sdkHome, 'online-version.json');
|
|
172
|
-
const onlineVersionInfo = fs_extra_1.default.readJSONSync(onlineVersionFile);
|
|
161
|
+
const onlineVersionInfo = constants_1.emulatorEnvVersion;
|
|
173
162
|
// avdName
|
|
174
163
|
const avdName = yield (0, prompts_1.input)({
|
|
175
164
|
message: 'avd name starting with Vela. (eg. Vela_Virtual_Device)',
|
|
@@ -192,10 +181,7 @@ class VelaAvdUtils {
|
|
|
192
181
|
if (!skinExists || (versionInfo && versionInfo.skins < onlineVersionInfo.skins)) {
|
|
193
182
|
const skinsUrl = VelaAvdUtils.getDownloadUrl('skins', onlineVersionInfo.skins);
|
|
194
183
|
yield VelaAvdUtils.downloadAndUnzip(skinsUrl, path_1.default.resolve(VelaAvdUtils.sdkHome, 'skins'));
|
|
195
|
-
ColorConsole_1.default.
|
|
196
|
-
level: shared_utils_1.LOG_LEVEL.Success,
|
|
197
|
-
message: `download skins succeed.`
|
|
198
|
-
});
|
|
184
|
+
ColorConsole_1.default.success(`Download skins succeed.`);
|
|
199
185
|
}
|
|
200
186
|
const skinList = VelaAvdUtils.velaAvdCls.getVelaSkinList();
|
|
201
187
|
avdSkin = yield (0, prompts_1.select)({
|
|
@@ -220,9 +206,12 @@ class VelaAvdUtils {
|
|
|
220
206
|
});
|
|
221
207
|
}
|
|
222
208
|
// 镜像,TODO:后续需要考虑多种设备的镜像
|
|
223
|
-
const
|
|
209
|
+
const velaImage = (yield (0, prompts_1.select)({
|
|
224
210
|
message: 'vela image.',
|
|
225
|
-
choices: [
|
|
211
|
+
choices: [
|
|
212
|
+
// { value: 'vela-release-4.0-pre', name: 'vela抢先版(4.0)' },
|
|
213
|
+
{ value: 'vela-dev-0.0.2', name: 'vela开发版(dev, 0.0.2)' }
|
|
214
|
+
]
|
|
226
215
|
}));
|
|
227
216
|
// 下载模拟器
|
|
228
217
|
const emulatorDir = path_1.default.resolve(VelaAvdUtils.sdkHome, 'emulator');
|
|
@@ -230,22 +219,20 @@ class VelaAvdUtils {
|
|
|
230
219
|
if (!emulatorExists || (versionInfo && versionInfo.emulator < onlineVersionInfo.emulator)) {
|
|
231
220
|
const emulatorDownloadUrl = VelaAvdUtils.getEmulatorUrl(onlineVersionInfo.emulator);
|
|
232
221
|
yield VelaAvdUtils.downloadAndUnzip(emulatorDownloadUrl, emulatorDir);
|
|
233
|
-
ColorConsole_1.default.
|
|
234
|
-
level: shared_utils_1.LOG_LEVEL.Success,
|
|
235
|
-
message: `download emulator succeed.`
|
|
236
|
-
});
|
|
222
|
+
ColorConsole_1.default.success(`Download emulator succeed.`);
|
|
237
223
|
}
|
|
238
224
|
// 下载镜像
|
|
239
|
-
const velaImageDownloadUrl = this.getSystemImageUrl(
|
|
240
|
-
const imageDir = path_1.default.resolve(VelaAvdUtils.sdkHome, 'system-images',
|
|
225
|
+
const velaImageDownloadUrl = this.getSystemImageUrl(velaImage);
|
|
226
|
+
const imageDir = path_1.default.resolve(VelaAvdUtils.sdkHome, 'system-images', velaImage);
|
|
241
227
|
const imageExists = fs_extra_1.default.existsSync(path_1.default.resolve(imageDir, 'nuttx'));
|
|
242
|
-
if (!imageExists
|
|
243
|
-
(
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
228
|
+
if (!imageExists) {
|
|
229
|
+
if (this.isReleaseVelaImage(velaImage)) {
|
|
230
|
+
yield VelaAvdUtils.downloadAndUnzip(velaImageDownloadUrl, imageDir);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
yield VelaAvdUtils.downloadFromCdn(velaImageDownloadUrl, imageDir, 'nuttx');
|
|
234
|
+
}
|
|
235
|
+
ColorConsole_1.default.success(`Download vela image succeed.`);
|
|
249
236
|
}
|
|
250
237
|
// 下载快应用qa文件
|
|
251
238
|
const qaDir = path_1.default.resolve(VelaAvdUtils.sdkHome, 'qa');
|
|
@@ -253,42 +240,32 @@ class VelaAvdUtils {
|
|
|
253
240
|
if (!qaExists || (versionInfo && versionInfo.qa < onlineVersionInfo.qa)) {
|
|
254
241
|
const qaUrl = VelaAvdUtils.getDownloadUrl('qa', onlineVersionInfo.qa);
|
|
255
242
|
yield VelaAvdUtils.downloadAndUnzip(qaUrl, qaDir);
|
|
256
|
-
ColorConsole_1.default.
|
|
257
|
-
level: shared_utils_1.LOG_LEVEL.Success,
|
|
258
|
-
message: `download quickapp font succeed.`
|
|
259
|
-
});
|
|
243
|
+
ColorConsole_1.default.success(`Download quickapp font succeed.`);
|
|
260
244
|
}
|
|
261
245
|
// 下载tools
|
|
262
246
|
const toolsDir = path_1.default.resolve(VelaAvdUtils.sdkHome, 'tools');
|
|
263
247
|
const toolsExists = fs_extra_1.default.existsSync(toolsDir);
|
|
264
248
|
if (!toolsExists || (versionInfo && versionInfo.tools < onlineVersionInfo.tools)) {
|
|
265
249
|
const v9fsToolUrl = VelaAvdUtils.getv9fsToolUrl();
|
|
266
|
-
const filename =
|
|
250
|
+
const filename = os_1.default.platform() === 'win32' ? 'ya-vm-file-server.exe' : 'ya-vm-file-server';
|
|
267
251
|
yield VelaAvdUtils.downloadFromCdn(v9fsToolUrl, toolsDir, filename);
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
252
|
+
// 后续使用fatfs+adb push方式需要下载相关镜像
|
|
253
|
+
// const imageUrl = VelaAvdUtils.getDownloadUrl('tools', onlineVersionInfo.tools, 'image')
|
|
254
|
+
// const imageDir = path.resolve(toolsDir, 'image')
|
|
255
|
+
// await VelaAvdUtils.downloadAndUnzip(imageUrl, imageDir)
|
|
256
|
+
ColorConsole_1.default.success(`Download tools succeed.`);
|
|
272
257
|
}
|
|
273
258
|
// 替换version.json
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
fs_extra_1.default.renameSync(onlineVersionFile, versionFile);
|
|
259
|
+
const versionJson = JSON.stringify(onlineVersionInfo, null, 2);
|
|
260
|
+
fs_extra_1.default.writeFileSync(versionFile, versionJson);
|
|
278
261
|
// 创建avd文本文件
|
|
279
262
|
const avdImagePath = imageDir;
|
|
280
|
-
const avdParams = { avdName, avdSkin, avdWidth, avdHeight, avdArch, avdImagePath };
|
|
263
|
+
const avdParams = { avdName, avdSkin, avdWidth, avdHeight, avdArch: emulator_1.IAvdArchType.arm, avdImagePath };
|
|
281
264
|
VelaAvdUtils.velaAvdCls.createVelaAvd(avdParams);
|
|
282
|
-
ColorConsole_1.default.
|
|
283
|
-
level: shared_utils_1.LOG_LEVEL.Success,
|
|
284
|
-
message: `create avd succeed.`
|
|
285
|
-
});
|
|
265
|
+
ColorConsole_1.default.success(`Create avd succeed.`);
|
|
286
266
|
}
|
|
287
267
|
catch (e) {
|
|
288
|
-
ColorConsole_1.default.
|
|
289
|
-
level: shared_utils_1.LOG_LEVEL.Error,
|
|
290
|
-
message: `create avd failed. Error: ${e.message}`
|
|
291
|
-
});
|
|
268
|
+
ColorConsole_1.default.throw(`Create avd failed. Error: ${e.message}`);
|
|
292
269
|
}
|
|
293
270
|
});
|
|
294
271
|
}
|
|
@@ -296,7 +273,7 @@ class VelaAvdUtils {
|
|
|
296
273
|
VelaAvdUtils.sdkHome = path_1.default.resolve(os_1.default.homedir(), '.export');
|
|
297
274
|
VelaAvdUtils.avdHome = path_1.default.resolve(os_1.default.homedir(), '.android', 'avd');
|
|
298
275
|
VelaAvdUtils.baseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide';
|
|
299
|
-
VelaAvdUtils.versionUrl = 'https://
|
|
276
|
+
VelaAvdUtils.versionUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/versions.json';
|
|
300
277
|
VelaAvdUtils.emulatorBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/emulator';
|
|
301
278
|
VelaAvdUtils.systemImageBaseUrl = 'https://vela-ide.cnbj3-fusion.mi-fds.com/vela-ide/system-images';
|
|
302
279
|
VelaAvdUtils.velaAvdCls = new emulator_1.VelaAvdCls({
|
|
@@ -304,5 +281,3 @@ VelaAvdUtils.velaAvdCls = new emulator_1.VelaAvdCls({
|
|
|
304
281
|
avdHome: VelaAvdUtils.avdHome
|
|
305
282
|
});
|
|
306
283
|
exports.default = VelaAvdUtils;
|
|
307
|
-
|
|
308
|
-
//# sourceMappingURL=VelaAvdUtils.js.map
|
package/lib/waiter.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiot-toolkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2-beta.2",
|
|
4
4
|
"description": "Tools for creating, developing, and packaging aiot applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aiot"
|
|
@@ -17,26 +17,28 @@
|
|
|
17
17
|
"files": [
|
|
18
18
|
"lib"
|
|
19
19
|
],
|
|
20
|
-
"repository": {
|
|
21
|
-
"type": "git",
|
|
22
|
-
"url": "ssh://xujunjie1@git.mioffice.cn:29418/vela/aiot-toolkit"
|
|
23
|
-
},
|
|
24
20
|
"scripts": {
|
|
25
21
|
"test": "node ./__tests__/aiot-toolkit.test.js"
|
|
26
22
|
},
|
|
27
23
|
"dependencies": {
|
|
28
|
-
"@aiot-toolkit/
|
|
29
|
-
"@aiot-toolkit/
|
|
24
|
+
"@aiot-toolkit/commander": "2.0.2-beta.2",
|
|
25
|
+
"@aiot-toolkit/emulator": "2.0.2-beta.2",
|
|
26
|
+
"@aiot-toolkit/shared-utils": "2.0.2-beta.2",
|
|
30
27
|
"@miwt/adb": "^0.7.1",
|
|
31
28
|
"adb-commander": "^0.1.9",
|
|
32
29
|
"adm-zip": "^0.5.10",
|
|
33
30
|
"axios": "^1.5.0",
|
|
34
31
|
"cli-progress": "^3.12.0",
|
|
35
|
-
"create-aiot": "2.0.
|
|
36
|
-
"fast-glob": "^3.3.2"
|
|
32
|
+
"create-aiot": "2.0.2-beta.2",
|
|
33
|
+
"fast-glob": "^3.3.2",
|
|
34
|
+
"file-lane": "2.0.2-beta.2",
|
|
35
|
+
"semver": "^7.6.0",
|
|
36
|
+
"ws": "^8.15.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@types/adm-zip": "^0.5.4"
|
|
39
|
+
"@types/adm-zip": "^0.5.4",
|
|
40
|
+
"@types/semver": "^7.5.8",
|
|
41
|
+
"@types/ws": "^8.5.10"
|
|
40
42
|
},
|
|
41
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "5226bdb0ba61daef207531c2eaaf3d034e04c50f"
|
|
42
44
|
}
|
package/lib/bin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 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 类型,新增的项目类型,只需在此处加上类型\n\nfunction findBuilder(projectPath: string): IBuilder | undefined {\n return new XtsBuilder()\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 : xts`,\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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["builder/IBuilder.ts"],"names":[],"mappings":"","file":"IBuilder.js","sourcesContent":["import { IParam } from '@aiot-toolkit/commander'\n\n/**\n * IBuilder\n */\nexport default interface IBuilder<O = any> {\n /**\n * build 的参数列表\n */\n readonly params: IParam[]\n\n /**\n * 打包项目\n * @param projectPath 项目路径\n * @param options 命令参数\n * @param watch 是否监听文件变化并持续打包\n */\n build(projectPath: string, options: O): void | Promise<void>\n\n /**\n * 当前 builder 是否可打包指定目录的项目\n * @param projectPath 项目目录\n */\n match(projectPath: string): boolean\n}\n"],"sourceRoot":"../../src"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["builder/UxBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uGAA8E;AAC9E,mJAA0H;AAE1H,0FAAiE;AAGjE,iGAAwE;AAExE,yCAAoC;AACpC,wDAAyB;AACzB,oDAA2B;AAC3B,gDAAuB;AAQvB;;GAEG;AACH,MAAM,SAAS;IAAf;QACW,oBAAe,GAAG,oBAAoB,CAAA;QA0D/C,WAAM,GAAgB;YACpB;gBACE,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,uCAAuC;aACrD;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mBAAmB;aACjC;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,qBAAqB;aACnC;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,qBAAqB;gBAClC,YAAY,EAAE,IAAI;gBAClB,cAAc,EAAE,IAAI;aACrB;SACF,CAAA;IAKH,CAAC;IAlFC;;;;;OAKG;IACG,KAAK,CAAC,WAAmB,EAAE,OAAyB;;YACxD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;YACzB,aAAa;YACb,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;YAC3D,OAAO,GAAG,gBAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,CAAC,CAAA;YACxD,OAAO;YACP,MAAM,eAAe,GAAa,IAAI,kBAAQ,CAAC,WAAW,CAAC,CAAA;YAE3D,OAAO;YACP,MAAM,cAAc,GAAsC,gBAAM,CAAC,KAAK,CACpE;gBACE,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC;gBAC3D,IAAI,EAAE,qBAAW,CAAC,WAAW;gBAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,EACD,wCAA8B,EAC9B,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,CACxB,CAAA;YAED,uBAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW;oBACX,OAAO;oBACP,KAAK;iBACN,EACD,IAAI,EACJ,CAAC,CACF;aACF,CAAC,CAAA;YACF,SAAS;YACT,MAAM,IAAI,oBAAQ,CAChB,eAAe,EACf,WAAW,EACX,cAA0C,CAC3C,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACpB,CAAC;KAAA;IAEO,kBAAkB,CAAC,WAAmB;QAC5C,MAAM,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACzD,IAAI,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI;gBACF,OAAO,kBAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;aAC7B;YAAC,OAAO,KAAK,EAAE;gBACd,uBAAa,CAAC,KAAK,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,KAAI,EAAE,CAAC,CAAA;aAC7C;SACF;QACD,OAAM;IACR,CAAC;IAwBD,KAAK,CAAC,WAAmB;QACvB,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;;AAzBe,sBAAY,GAAG,cAAH,AAAiB,CAAA;AA2B/C,kBAAe,SAAS,CAAA","file":"UxBuilder.js","sourcesContent":["import CompileMode from '@aiot-toolkit/aiotpack/lib/compiler/enum/CompileMode'\nimport JavascriptDefaultCompileOption from '@aiot-toolkit/aiotpack/lib/compiler/javascript/JavascriptDefaultCompileOption'\nimport IJavascriptCompileOption from '@aiot-toolkit/aiotpack/lib/compiler/javascript/interface/IJavascriptCompileOption'\nimport UxConfig from '@aiot-toolkit/aiotpack/lib/config/UxConfig'\nimport IQuickAppConfig from '@aiot-toolkit/aiotpack/src/compiler/javascript/vela/interface/IQuickAppConfig'\nimport ParamType from '@aiot-toolkit/commander/lib/interface/IParam'\nimport ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\nimport { FileLane } from 'file-lane'\nimport Fs from 'fs-extra'\nimport Lodash from 'lodash'\nimport Path from 'path'\nimport IBuilder from './IBuilder'\n\ninterface IUxBuilderOption extends Dictionary {\n watch?: boolean\n mode: CompileMode\n}\n\n/**\n * UxBuilder\n */\nclass UxBuilder implements IBuilder<IUxBuilderOption> {\n readonly QUICKAPP_CONFIG = 'quickapp.config.js'\n /**\n * ux项目的build函数\n * @param projectPath 项目路径\n * @param options 命令参数\n * @param watch 是否开启监听\n */\n async build(projectPath: string, options: IUxBuilderOption): Promise<void> {\n const { watch } = options\n // 读取项目中文件的配置\n const quickappConfig = this.readQuickAppConfig(projectPath)\n options = Lodash.merge({}, options, quickappConfig?.cli)\n // 项目配置\n const uxProjectConfig: UxConfig = new UxConfig(projectPath)\n\n // 编译配置\n const compilerOption: Partial<IJavascriptCompileOption> = Lodash.merge(\n {\n projectPath: Path.join(projectPath, uxProjectConfig.output),\n mode: CompileMode.DEVELOPMENT,\n disabledJSC: options.disabledJsc\n },\n JavascriptDefaultCompileOption,\n quickappConfig?.webpack\n )\n\n ColorConsole2.info({\n word: JSON.stringify(\n {\n step: 'build ux',\n projectPath,\n options,\n watch\n },\n null,\n 2\n )\n })\n // 开始编译项目\n await new FileLane<IJavascriptCompileOption>(\n uxProjectConfig,\n projectPath,\n compilerOption as IJavascriptCompileOption\n ).start({ watch })\n }\n\n private readQuickAppConfig(projectPath: string): IQuickAppConfig | undefined {\n const path = Path.join(projectPath, this.QUICKAPP_CONFIG)\n if (Fs.existsSync(path)) {\n try {\n return Fs.readJsonSync(path)\n } catch (error) {\n ColorConsole2.throw(error?.toString() || '')\n }\n }\n return\n }\n static readonly PROJECT_TYPE = 'ux quick app'\n params: ParamType[] = [\n {\n name: 'enable-e2e',\n description: 'inject test-suite for current project'\n },\n {\n name: 'devtool',\n description: 'source map config'\n },\n {\n name: 'disable-subpackages',\n description: 'disable subpackages'\n },\n {\n type: 'confirm',\n name: 'disabled-jsc',\n description: 'disabled jsc bundle',\n defaultValue: true,\n enableInquirer: true\n }\n ]\n\n match(projectPath: string): boolean {\n return projectPath.includes('ux')\n }\n}\nexport default UxBuilder\n"],"sourceRoot":"../../src"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["builder/XtsBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,qDAAkD;AAKlD,0FAA+E;AAG/E,6DAAsD;AACtD,+FAAsE;AACtE,iGAAwE;AACxE,yCAAoC;AACpC,4CAAmB;AACnB,gDAAuB;AAQvB;;GAEG;AACH,MAAM,UAAU;IAAhB;QA4BW,WAAM,GAAa;YAC1B;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,0JAA0J;gBAC5J,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;IA/CC,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;YACD,MAAM,MAAM,GAAG,IAAI,oBAAS,EAAE,CAAA;YAC9B,OAAO,IAAI,oBAAQ,CAAqB,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAChG,CAAC;KAAA;;AAzBe,uBAAY,GAAG,eAAH,AAAkB,CAAA;AAkDhD,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 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 const config = new XtsConfig()\n return new FileLane<IXtsCompileOptions>(config, projectPath, compilerOptions).start({ watch })\n }\n\n readonly params: IParam[] = [\n {\n name: 'skip',\n type: 'string',\n description:\n 'Can configure skip steps, comma separated, optional values: install (skip install pre-dependencies),ts2wasm (skip compilation), package (skip packaging)',\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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
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;
|
|
@@ -1,108 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["utils/DeviceUtil.ts"],"names":[],"mappings":"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","file":"DeviceUtil.js","sourcesContent":["import { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { checkbox, input, select } from '@inquirer/prompts'\nimport fs from 'fs'\nimport path from 'path'\nimport { IGetAvailablePlatform, IInstallApkAndDbg } from '../interface/CommandInterface'\nimport AdbUtils from './AdbUtils'\nimport RequestUtils from './RequestUtils'\n\n/**\n * DeviceUtil\n */\nclass DeviceUtil {\n static ipRegExp =\n /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\n static CLIENT_PORT = 39517\n static quickapp_url = 'https://statres.quickapp.cn/quickapp/quickapptool/release/platform/'\n /**\n * 获取连接上的所有设备数组,供IDE使用\n * @returns\n */\n static getAllConnectedDevices() {\n try {\n return AdbUtils.getAllConnectedDevices().then((deviceList) => {\n if (deviceList.length > 0) {\n ColorConsole.log({\n message: `Devices connected via adb: ${deviceList.join(', ')}.`\n })\n return Promise.resolve(deviceList)\n } else {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `No device is currently connected, please check the following preparations in turn:\\n 1. Whether the device is started;\\n 2. Whether in the same LAN WI-FI;\\n 3. Whether the device can be connected to the computer via USB;`,\n isOnlyPrintError: true\n })\n process.exit()\n }\n })\n } catch (error) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: 'Error getting connection information of adb device',\n isOnlyPrintError: true\n })\n process.exit()\n }\n }\n /**\n * 安装调试器、预览版\n * @param options\n * @returns\n */\n static async installDbgAndMkp(options: IInstallApkAndDbg) {\n try {\n const { ip = '' } = options\n let connectDeviceList: string[] = [ip]\n // 1. 判断设备是否连接\n await this.connectDevice(ip)\n // 2. 获取连接的设备\n const deviceList = await AdbUtils.getUSBConnectedDevices()\n const finalDeviceList =\n deviceList.length > 0\n ? await this.queryDevice(deviceList, 'Install Quickapp debugger or previewer ')\n : []\n connectDeviceList = finalDeviceList ? [...finalDeviceList] : []\n // 若connectDeviceList为空,应该warn并结束程序\n connectDeviceList.length <= 0 &&\n ColorConsole.log({\n message: 'No device requires debugger or previewer installation',\n level: LOG_LEVEL.Warn\n }) &&\n process.exit()\n // 3. 下载并获取调试器、预览器地址\n const debuggerPath = await this.downloadApk(options, true)\n const previewPath = await this.downloadApk(options, false)\n // // 4. 安装调试器\n await this.installApk(connectDeviceList, debuggerPath)\n await this.installApk(connectDeviceList, previewPath)\n return Promise.resolve(\n 'All devices successfully installed the Quickapp debugger and previewer'\n )\n } catch (error) {\n return Promise.reject(\n new Error(`Failed to install debugger, error message:${(error as Error).message}`)\n )\n }\n }\n /**\n * 如果是TV等AIOT设备,需要通过IP连接\n * 1. 若ip为空,则询问是否要连接新设备\n * 2. 无需连接新设备,返回\n * 3. 连接新设备,输入ip值(可输入多个ip,以逗号隔断)\n * 4. 判断输入值,空则输出info并返回\n * 5. 处理ip,输入每个ip设备的端口号,尝试连接,给出连接结果\n * @param ip\n */\n static async connectDevice(ip: string) {\n try {\n if (!ip) {\n const WIFI_TEXT = 'Yes, connect a new wifi device'\n const connectType = await select({\n message:\n '(USB devices will automatically connect) Choose whether to connect to a new wifi device, and fill in its IP address later:',\n choices: [{ value: WIFI_TEXT }, { value: 'Skip, keep connected device' }]\n })\n if (connectType === WIFI_TEXT) {\n const deviceIp = await input({\n message:\n 'Please enter the IP address of the device under wifi(eg:192.168.1.1),make sure that the computer and the device are under the same wifi。If you need to enter multiple IPs, please separate them with \",\":'\n })\n ip = deviceIp\n } else {\n return Promise.resolve()\n }\n }\n if (ip.length === 0) {\n ColorConsole.log({\n message: `Since no ip address is entered, the connected device will be connected`\n })\n return Promise.resolve()\n }\n const ips = ip.trim().split(',')\n const invalidIps = ips.filter((ip) => !this.ipRegExp.test(ip))\n if (invalidIps && invalidIps.length) {\n invalidIps.map((ip) => {\n ColorConsole.log({\n message: `ip: ${ip} is invalid IP`,\n level: LOG_LEVEL.Error,\n isOnlyPrintError: true\n })\n process.exit()\n })\n } else {\n const newDeviceListPromiseArray = Array.from(ips, async (ip) => {\n const devicePort = await input({\n message: `Please enter the port of the IP(${ip})`,\n default: '5555'\n })\n return AdbUtils.connect(ip, devicePort)\n .then(() => {\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `wifi connection ip: The device with ip of \"${ip}\" succeeded`\n })\n return Promise.resolve()\n })\n .catch((err) => {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: err,\n isOnlyPrintError: true\n })\n process.exit()\n })\n })\n return Promise.all(newDeviceListPromiseArray)\n .then(() => {\n ColorConsole.log({\n message: 'All new WIFI devices are connected'\n })\n return Promise.resolve()\n })\n .catch(() => {\n // 在抛出错误前已经弹出错误日志了,故这里直接退出\n process.exit()\n })\n }\n } catch {}\n }\n /**\n * 选择一个或者多个设备\n * @param deviceList\n * @param orderText\n * @returns\n */\n static async queryDevice(deviceList: string[] | undefined, orderText: string = '') {\n if (!deviceList || deviceList.length === 0) {\n ColorConsole.log({\n message: `No device is connected yet, please confirm and try again`,\n level: LOG_LEVEL.Error\n })\n return\n }\n const ALL_TEXT = 'All connected devices'\n const deviceListObj = deviceList.map((device) => {\n return {\n value: device\n }\n })\n // 可选一台或多台设备\n const chooseDevices = await checkbox({\n message: `Please select the device that needs to execute command \"${orderText}\":`,\n choices: [{ value: ALL_TEXT }, ...deviceListObj]\n })\n return chooseDevices[0] === ALL_TEXT ? deviceList : chooseDevices\n }\n /**\n * 下载apk\n * @param options\n * @param isQuickAppDebugger\n * @returns\n */\n static async downloadApk(options: IInstallApkAndDbg, isQuickAppDebugger: boolean) {\n const { apkVersion } = options\n let fileName = ''\n let newVersion = apkVersion || 'v1100'\n if (isQuickAppDebugger) {\n fileName = `quickapp_debugger_${newVersion}.apk`\n } else {\n fileName = `quickapp_platform_preview_release_${newVersion}.apk`\n }\n const url = `${this.quickapp_url}${fileName}`\n const apkPath = path.join(__dirname, './apk/', fileName)\n if (fs.existsSync(apkPath)) {\n // apk已下载\n ColorConsole.log({\n message: 'The installation package has been downloaded, now use the cache file to install'\n })\n return apkPath\n } else {\n try {\n const result = await RequestUtils.downloadFile(url, fileName)\n // 打印出成功信息\n ColorConsole.log({\n message: `Success to download, ${result}`,\n level: LOG_LEVEL.Success\n })\n return apkPath\n } catch (error) {\n // 打印出错误\n ColorConsole.log({\n message: `Failed to download the installation package, ${error}`,\n level: LOG_LEVEL.Error,\n isOnlyPrintError: true\n })\n process.exit()\n }\n }\n }\n /**\n * 获取设备上的快应用框架(需要先安装调试器)\n * 1. 请求获取平台信息\n * 2. 若获取结果为空或者undefined,则等待3s再次请求\n * 3. 若获取结果不为空,但属性availablePlatforms为空,则等待3s再次请求\n * 4. 若请求次数超过3次,则结束请求\n * 5. 否则打印获取结果\n * @param options\n */\n static async getAvailablePlatform(options: IGetAvailablePlatform) {\n try {\n const { ip, port, sn: deviceSn } = options\n let client = { ip, port }\n let countTime = 0\n let data\n\n const sleep = () => {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `Error when the device gets running platforms,request again after 3s delay`,\n isOnlyPrintError: true\n })\n return new Promise((resolve) => setTimeout(resolve, 3000))\n }\n const requestPlatform = async () => {\n do {\n if (countTime > 0) {\n // 等待3s\n await sleep()\n }\n data = await RequestUtils.sendReq(client, '/availablePlatforms')\n } while (++countTime < 3 && (!data || (data && !JSON.parse(data).availablePlatforms)))\n if (data) {\n const dataObj = JSON.parse(data)\n if (!dataObj.availablePlatforms) {\n // 请求结果不存在平台信息,报错,结束程序\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `the request result no avaliable platform `\n })\n process.exit()\n } else {\n // 打印请求的平台信息\n const availablePlatforms = dataObj.availablePlatforms\n ColorConsole.log({\n message: `The Quickapp engine list of device \"${deviceSn}\" is:${availablePlatforms.join(\n ','\n )}`\n })\n }\n } else {\n //请求失败,结束程序\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `the device gets running platforms error`\n })\n process.exit()\n }\n }\n // 先打开调试器,才能获取运行平台\n await AdbUtils.startDebugger(deviceSn)\n await requestPlatform()\n } catch (error) {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `Error getting the list of Quickapp engines on the device, error message:${\n (error as Error).message\n }`\n })\n }\n }\n /**\n * 给设备列表中的每个设备安装apk\n * @param deviceList\n * @param apkPath\n * @returns\n */\n static async installApk(deviceList: string[] = [], apkPath: string) {\n try {\n const newDeviceListPromiseArray = Array.from(deviceList, (deviceSn) => {\n return AdbUtils.installApk(deviceSn, apkPath)\n })\n const apkName = path.basename(apkPath)\n return Promise.all(newDeviceListPromiseArray)\n .then(() => {\n ColorConsole.log({\n level: LOG_LEVEL.Success,\n message: `All devices installed ${apkName}`\n })\n })\n .catch(() => {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `Installed ${apkName} failed`\n })\n process.exit()\n })\n } catch (error) {}\n }\n}\nexport default DeviceUtil\n"],"sourceRoot":"../../src"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["utils/RequestUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6DAAsD;AACtD,+FAAsE;AACtE,kDAAyB;AACzB,wDAAyB;AACzB,gDAAuB;AACvB;;GAEG;AACH,MAAM,YAAY;IAChB,MAAM,CAAO,OAAO,CAAC,MAAoC,EAAE,GAAW,EAAE,MAAe;;YACrF,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,MAAM,GAAG,UAAU,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,CAAA;gBACzD,IAAI,OAAO,GAAG;oBACZ,IAAI,EAAE,MAAM,CAAC,EAAE;oBACf,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,IAAI;iBACd,CAAA;gBACD,IAAI,MAAM,EAAE;oBACV,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;wBACnC,OAAO,EAAE,MAAM;qBAChB,CAAC,CAAA;iBACH;gBACD,eAAK;qBACF,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;qBACrB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,sBAAY,CAAC,GAAG,CAAC;wBACf,OAAO,EAAE,8BAA8B,MAAM,YAAY;qBAC1D,CAAC,CAAA;oBACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC1B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACf,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;wBAClD,OAAO;wBACP,sBAAY,CAAC,GAAG,CAAC;4BACf,KAAK,EAAE,wBAAS,CAAC,KAAK;4BACtB,OAAO,EAAE,8BAA8B,MAAM,8BAA8B;4BAC3E,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAA;qBACH;yBAAM;wBACL,sBAAY,CAAC,GAAG,CAAC;4BACf,KAAK,EAAE,wBAAS,CAAC,KAAK;4BACtB,OAAO,EAAE,8BAA8B,MAAM,mBAC1C,KAAe,CAAC,OACnB,EAAE;4BACF,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAA;qBACH;gBACH,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;IACD,MAAM,CAAC,YAAY,CAAC,GAAW,EAAE,QAAgB;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,OAAO;YACP,sBAAY,CAAC,GAAG,CAAC;gBACf,OAAO,EAAE,0BAA0B,QAAQ,aAAa,GAAG,EAAE;aAC9D,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpC,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAA;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC3B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAC/C,kBAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBAC3B,kBAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAC/D,OAAO,CAAC,iBAAiB,QAAQ,eAAe,CAAC,CAAA;aAClD;iBAAM;gBACL,MAAM,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;aAC1D;QACH,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;CACF;AACD,kBAAe,YAAY,CAAA","file":"RequestUtils.js","sourcesContent":["import { LOG_LEVEL } from '@aiot-toolkit/shared-utils'\nimport ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport axios from 'axios'\nimport fs from 'fs-extra'\nimport path from 'path'\n/**\n * RequestUtils\n */\nclass RequestUtils {\n static async sendReq(client: { ip: string; port: string }, api: string, params?: string) {\n return new Promise<string>((resolve) => {\n const requrl = `http://${client.ip}:${client.port}${api}`\n let options = {\n host: client.ip,\n port: client.port,\n path: api,\n timeout: 3000\n }\n if (params) {\n options = Object.assign({}, options, {\n headers: params\n })\n }\n axios\n .post(requrl, options)\n .then((data) => {\n ColorConsole.log({\n message: `### App Server ### Request ${requrl} succeeded`\n })\n resolve(data.toString())\n })\n .catch((error) => {\n if (error.respose && error.response.status === 408) {\n // 超时处理\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `### App Server ### Request ${requrl} timed out, please try again`,\n isOnlyPrintError: true\n })\n } else {\n ColorConsole.log({\n level: LOG_LEVEL.Error,\n message: `### App Server ### Request ${requrl} error message: ${\n (error as Error).message\n }`,\n isOnlyPrintError: true\n })\n }\n })\n })\n }\n static downloadFile(url: string, fileName: string) {\n return new Promise(async (resolve, reject) => {\n // 开始下载\n ColorConsole.log({\n message: `Start downloading file:${fileName}, address:${url}`\n })\n const response = await axios.get(url, {\n responseType: 'arraybuffer'\n })\n if (response.status === 200) {\n const targetDir = path.join(__dirname, './apk')\n fs.ensureDirSync(targetDir)\n fs.writeFileSync(path.join(targetDir, fileName), response.data)\n resolve(`Download file ${fileName} successfully`)\n } else {\n reject(`Download failed, status code:${response.status}`)\n }\n })\n }\n}\nexport default RequestUtils\n"],"sourceRoot":"../../src"}
|
|
@@ -1 +0,0 @@
|
|
|
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/lib/waiter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["waiter.ts"],"names":[],"mappings":";;AAAA,uDAA2D;AAE3D,MAAM,MAAM,GAAsB,IAAI,6BAAiB,CAAC;IACtD,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE;QACP;YACE,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,QAAQ;YACrB,MAAM;gBACJ,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBACrB,UAAU,CAAC,GAAG,EAAE;wBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;wBACvB,OAAO,EAAE,CAAA;oBACX,CAAC,EAAE,IAAI,CAAC,CAAA;gBACV,CAAC,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,MAAM;YACnB,MAAM;gBACJ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC7B,CAAC;SACF;QACD;YACE,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,QAAQ;YACrB,MAAM;gBACJ,MAAM,CAAC,QAAQ,EAAE,CAAA;gBACjB,MAAM,CAAC,QAAQ,EAAE,CAAA;YACnB,CAAC;SACF;KACF;CACF,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA","file":"waiter.js","sourcesContent":["import { PersistentCommand } from '@aiot-toolkit/commander'\n\nconst waiter: PersistentCommand = new PersistentCommand({\n description: 'aiot-toolkit 常驻命令',\n options: [\n {\n key: 'a',\n description: '获取设备列表',\n action() {\n return new Promise<void>((resolve) => {\n console.log('获取中...')\n setTimeout(() => {\n console.log('设备列表:123')\n resolve()\n }, 3000)\n })\n }\n },\n {\n key: 'i',\n description: '自我介绍',\n action() {\n console.log('我就是一个没用的快捷命令')\n }\n },\n {\n key: '?',\n description: '显示所有命令',\n action() {\n waiter.clearLog()\n waiter.describe()\n }\n }\n ]\n})\n\nexport default waiter\n"],"sourceRoot":"../src"}
|