1 line
9.1 KiB
JavaScript
Raw Permalink Normal View History

2025-04-24 17:03:28 +08:00
const Path=require("path"),Fs=require("fire-fs"),CfgUtil=Editor.require("packages://hot-update-tools/core/CfgUtil.js"),Util=Editor.require("packages://hot-update-tools/core/Util.js"),OutPut=Editor.require("packages://hot-update-tools/core/OutPut.js"),GoogleAnalytics=Editor.require("packages://hot-update-tools/core/GoogleAnalytics.js"),Electron=require("electron");Vue.component("manifest-gen",{template:Fs.readFileSync(Editor.url("packages://hot-update-tools/panel/manifest-gen.html"),"utf-8"),mixins:[Editor.require("packages://hot-update-tools/panel/mixin.js")],data:()=>({version:"",serverRootDir:"",remoteServerVersion:"",hotAddressArray:[],resourceRootDir:"",genManifestDir:"",isShowUseAddrBtn:!1,isShowDelAddrBtn:!1}),computed:{isValidResDir(){return!(!this.resourceRootDir||!Fs.existsSync(this.resourceRootDir))}},created(){this.$nextTick(()=>{let e=CfgUtil.cfgData;e&&(this.version=e.version,this.serverRootDir=e.serverRootDir,this.resourceRootDir=e.resourceRootDir,this.hotAddressArray=e.hotAddressArray||[]),this.genManifestDir=OutPut.manifestDir,this._getRemoteServerVersion(),this._initResourceBuild()})},methods:{_initResourceBuild(){let e=Editor.Project.path,t=Path.join(e,"local/builder.json");if(Fs.existsSync(t)){let s=JSON.parse(Fs.readFileSync(t,"utf-8")),i=s.buildPath,r=Path.join(e,i),o=Path.join(r,`jsb-${s.template}`);if(!Fs.existsSync(o)){let e=Path.join(r,s.platform);Fs.existsSync(e)&&(o=e)}this._checkResourceRootDir(o)}else this.log("发现没有构建项目, 使用前请先构建项目!")},_isVersionPass(e,t){if(void 0===e||null===e||void 0===t||null===t)return!1;let s=e.split("."),i=t.split("."),r=s.length>i.length?s.length:i.length;for(let e=0;e<r;e++){let t=s[e],r=i[e];if(void 0===t&&void 0!==r)return!1;if(void 0!==t&&void 0===r)return!0;if(t&&r&&parseInt(t)>parseInt(r))return!0}return!1},_updateShowUseAddrBtn(){let e=this.$els.address.value;this.serverRootDir===e&&(this.isShowUseAddrBtn=!1)},_addHotAddress(e){let t=!0;for(let s=0;s<this.hotAddressArray.length;s++){if(this.hotAddressArray[s]===e){t=!1;break}}t&&(this.hotAddressArray.push(e),this.log("[HotAddress]历史记录添加成功:"+e))},_getRemoteServerVersion(){if(this.serverRootDir.length<=0)return;this.remoteServerVersion=null;let e=this.serverRootDir+"/version.manifest",t=new XMLHttpRequest;t.onreadystatechange=(()=>{if(4===t.readyState&&t.status>=200&&t.status<400){let e=t.responseText,s=null;try{s=JSON.parse(e)}catch(e){return void this.log("获取远程版本号失败!")}this.remoteServerVersion=s.version}else t.status}),t.open("get",e,!0),t.setRequestHeader("If-Modified-Since","0"),t.send()},onClickGenCfg(e){GoogleAnalytics.eventCustom("GenManifest"),!this.version||this.version.length<=0?this.log("[生成] 版本号未填写"):!this.serverRootDir||this.serverRootDir.length<=0?this.log("[生成] 服务器地址未填写"):0!==this.resourceRootDir.length?this._checkResourceRootDir(this.resourceRootDir)&&(!this.genManifestDir||this.genManifestDir.length<=0?this.log("[生成] manifest文件生成地址未填写"):Fs.existsSync(this.genManifestDir)?(this._saveConfig(),this._genVersion(this.version,this.serverRootDir,this.resourceRootDir,this.genManifestDir)):this.log("[生成] manifest存储目录不存在: "+this.genManifestDir)):this.log("[生成] 请先指定 <build项目资源文件目录>")},onClickOpenVersionDir(){this.openDir(OutPut.versionsDir)},onOpenManifestDir(){this.openDir(this.genManifestDir)},onOpenResourceDir(){this.openDir(this.resourceRootDir)},onSelectResourceRootDir(){let e=Editor.Dialog.openFile({title:"选择构建后的根目录",defaultPath:Editor.projectInfo.path,properties:["openDirectory"]});if(-1!==e){let t=e[0];this._checkResourceRootDir(t)&&(this.resourceRootDir=t,this._saveConfig())}},onBtnClickDelSelectedHotAddress(){let e=this.$els.address.value;if(this.hotAddressArray.length>0){let t=!1;for(let s=0;s<this.hotAddressArray.length;){let i=this.hotAddressArray[s];i===e?(this.hotAddressArray.splice(s,1),t=!0,this.log("删除历史地址成功: "+i)):s++}t&&(this.isShowDelAddrBtn=!1,this.isShowUseAddrBtn=!1,this._saveConfi