UNPKG

@hap-toolkit/packager

Version:

@hap-toolkit/packager

3 lines (2 loc) 4.59 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _fsExtra=_interopRequireDefault(require("fs-extra")),_path=_interopRequireDefault(require("path")),_qrImage=_interopRequireDefault(require("qr-image")),_moment=_interopRequireDefault(require("moment")),_sharedUtils=require("@hap-toolkit/shared-utils"),_service=require("./service");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const CLIENT_PORT=39517,RPKS_SUPPORT_VERSION_FROM=1040;async function index(e,t){const r=e.app.server.address().port,o=(0,_service.getServerAddress)(r),a=_qrImage.default.image(o,{size:9});e.type="image/png",e.body=a,await t()}async function bundle(e,t){const{projectPath:r}=_sharedUtils.globalConfig,o=_path.default.join(r,_sharedUtils.globalConfig.releasePath);let a;const{options:s={}}=e.conf;if(s.rpkPath)a=s.rpkPath,_path.default.isAbsolute(a)||(a=_path.default.join(r,s.rpkPath)),_sharedUtils.colorconsole.log(`### App Server ### 指定返回rpk:${a}`);else{const t=(0,_service.getProjectInfo)(r,_sharedUtils.globalConfig.sourceRoot),s=t.projectName,i=t.projectVersion,n=e.request.query.platformVersion;let l=!1;0===parseInt(e.request.query.mode||0)&&(l=(0,_sharedUtils.getUseFullPackage)(r)),n&&n>=1040&&!l&&(a=(0,_service.getDistFilePath)(o,s,i,"rpks")),a||(a=(0,_service.getDistFilePath)(o,s,i,"rpk"))}a?(e.set("Content-Type","application/octet-stream"),e.set("Content-Transfer-Encoding","binary"),e.set("Content-Disposition",`attachment; filename=${_path.default.basename(a)}`),e.body=_fsExtra.default.createReadStream(a)):(_sharedUtils.colorconsole.error(`### App Server ### 项目${(0,_sharedUtils.relateCwd)(o)}目录下不存在rpk或rpks文件:${o}`),e.throw("404","无法找到项目的rpks或rpk文件")),await t()}async function logger(e,t){try{const{clientRecordPath:r}=_sharedUtils.globalConfig,{sn:o,clientIp:a,linkMode:s}=(0,_service.getClientFromRequest)(e.request);let i={sn:o,ip:a,port:39517};switch(s){case _service.LINK_MODE.WIFI:_sharedUtils.colorconsole.info(`### App Server ### 记录从${a}进入的HTTP请求`),(0,_sharedUtils.recordClient)(r,i);break;case _service.LINK_MODE.ADB:if(i=(0,_sharedUtils.getRecordClient)(r,o,a),!i){const t=e.adbDebugger.emulators.get(o);_sharedUtils.colorconsole.warn(`### App Server ### 通过(${o})查找到设备${t}`),i=(0,_sharedUtils.getRecordClient)(r,t,a)}i?(_sharedUtils.colorconsole.info(`### App Server ### 记录从设备(${o})进入的HTTP请求`),(0,_sharedUtils.recordClient)(r,i)):_sharedUtils.colorconsole.warn(`### App Server ### :记录设备(${o})失败`)}await t()}catch(e){_sharedUtils.colorconsole.error(`### App Server ### 记录log出错: ${e.message}`)}}async function notify(e,t){const r=e.conf.options.callback;if("function"==typeof r){var o,a;r({action:"runCompile",defineOptions:null===(o=_sharedUtils.globalConfig.launchOptions)||void 0===o||null===(a=o.compileOptions)||void 0===a?void 0:a.defineOptions})}e.status=200,await t()}async function qrCode(e,t){const r=e.app.server.address().port,o=(0,_service.getServerAddress)(r),a=_qrImage.default.image(o,{size:9});await t(),e.type="image/png",e.body=a}async function saveDataCoverage(e,t){const r=e.request.body.coverage;r||e.throw("请求错误,请携带相关的代码覆盖率数据作为请求参数!");const{projectPath:o,dataCoverage:a}=_sharedUtils.globalConfig,s=_path.default.join(o,a);_fsExtra.default.existsSync(s)||_fsExtra.default.mkdirSync(s),_sharedUtils.colorconsole.info(`### App Server ### 保存项目运行后的代码覆盖率数据到目录:${a}`);const i=`${(0,_moment.default)().format("YYYYMMDD-HH-mm-ss")}.json`,n=_path.default.join(s,i);_fsExtra.default.writeFileSync(n,JSON.stringify(r)),e.status=200}async function saveDataLogs(e,t){const r=e.request.body.info,o=e.request.body.list,{deviceSerialId:a,deviceInfo:{brand:s,model:i}}=r;o||e.throw("请求错误,请携带相关的日志记录数据!");const n=_path.default.resolve(_sharedUtils.globalConfig.projectPath,"logs");_fsExtra.default.ensureDirSync(n);const l=encodeURIComponent(a),c=i.split(" ").join("_"),d=_path.default.resolve(n,`quickapp-${l}-${s}-${c}.log`);let p=o.map((e=>{const{time:t,type:r,args:o}=e;return`${(0,_moment.default)(t).format("YYYY.MM.DD hh:mm:ss.SSS")} ${r.padStart(18," ")}: ${o}\n`})).join("");_fsExtra.default.appendFile(d,p,(e=>{e&&console.log(e)})),e.status=200}var _default={index:index,bundle:bundle,qrCode:qrCode,logger:logger,notify:notify,saveDataCoverage:saveDataCoverage,saveDataLogs:saveDataLogs};exports.default=_default; //# sourceMappingURL=routes.js.map