aiot-toolkit 2.0.1-alpha.12 → 2.0.1-alpha.13

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.
@@ -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: 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 { getSystemArch } from '@aiot-toolkit/emulator/lib/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.throw(`Download ${filename} failed`)\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 hostArch = getSystemArch()\n let hostOs = systemOs === 'win32' ? 'windows' : systemOs\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 = getSystemArch()\n let v9fsTool = ''\n switch (systemOs) {\n case 'linux':\n v9fsTool = `ya-vm-file-server-linux-${arch}`\n break\n case 'win32':\n v9fsTool = 'ya-vm-file-server-windows.exe'\n break\n case 'darwin':\n v9fsTool = `ya-vm-file-server-darwin-${arch}`\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(\n VelaAvdUtils.versionUrl,\n VelaAvdUtils.sdkHome,\n 'online-version.json'\n )\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.success(`Download skins succeed.`)\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.success(`Download emulator succeed.`)\n }\n // 下载镜像\n const velaImageDownloadUrl = this.getSystemImageUrl(\n onlineVersionInfo['system-images'],\n avdArch\n )\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.success(`Download vela image succeed.`)\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.success(`Download quickapp font succeed.`)\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.success(`Download tools succeed.`)\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.success(`Create avd succeed.`)\n } catch (e) {\n ColorConsole.throw(`Create avd failed. Error: ${(e as Error).message}`)\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.12",
3
+ "version": "2.0.1-alpha.13",
4
4
  "description": "Tools for creating, developing, and packaging aiot applications.",
5
5
  "keywords": [
6
6
  "aiot"
@@ -25,19 +25,22 @@
25
25
  "test": "node ./__tests__/aiot-toolkit.test.js"
26
26
  },
27
27
  "dependencies": {
28
- "@aiot-toolkit/commander": "2.0.1-alpha.12",
29
- "@aiot-toolkit/emulator": "2.0.1-alpha.12",
30
- "@aiot-toolkit/shared-utils": "2.0.1-alpha.12",
28
+ "@aiot-toolkit/commander": "2.0.1-alpha.13",
29
+ "@aiot-toolkit/emulator": "2.0.1-alpha.13",
30
+ "@aiot-toolkit/shared-utils": "2.0.1-alpha.13",
31
31
  "@miwt/adb": "^0.7.1",
32
32
  "adb-commander": "^0.1.9",
33
33
  "adm-zip": "^0.5.10",
34
34
  "axios": "^1.5.0",
35
35
  "cli-progress": "^3.12.0",
36
+ "create-aiot": "2.0.1-alpha.13",
36
37
  "fast-glob": "^3.3.2",
37
- "file-lane": "2.0.1-alpha.12"
38
+ "file-lane": "2.0.1-alpha.13",
39
+ "ws": "^8.15.1"
38
40
  },
39
41
  "devDependencies": {
40
- "@types/adm-zip": "^0.5.4"
42
+ "@types/adm-zip": "^0.5.4",
43
+ "@types/ws": "^8.5.10"
41
44
  },
42
- "gitHead": "1d1840ffc4a8e32c7a097c7335c226285bfba95f"
45
+ "gitHead": "49040b26a267943df4d0b202b200d4df5bcbc1ef"
43
46
  }
@@ -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"}