vivo-hap-toolkit
Version:
A command line toolkit for developing Quick Apps.
3 lines (2 loc) • 1.21 kB
JavaScript
"use strict";const path=require("path"),{colorconsole:colorconsole,readJson:readJson,logger:logger}=require("@vivo-hap-toolkit/shared-utils"),eventBus=require("@vivo-hap-toolkit/shared-utils/event-bus"),{resolveEntries:resolveEntries}=require("../utils"),{PACKAGER_WATCH_START:PACKAGER_WATCH_START}=eventBus;function sort(t){return t.sort((t,s)=>t.localeCompare(s))}module.exports=class{constructor(t){this.appRoot=t.appRoot,this.root=t.root,this.manifestFile=path.resolve(this.root,"manifest.json");let s={};try{const t=readJson(this.manifestFile);s=resolveEntries(t,this.root,this.appRoot)}catch(t){}this.list=Object.keys(s),this.list=sort(this.list)}hasChanged(t){const s=sort(t),e=JSON.stringify(s)!==JSON.stringify(this.list);return e&&(this.list=s),e}apply(t){t.hooks.watchRun.tapAsync("watch",(t,s)=>{eventBus.emit(PACKAGER_WATCH_START),logger.clear();try{if(t.watchFileSystem.watcher.mtimes[this.manifestFile]){const s=readJson(this.manifestFile),e=resolveEntries(s,this.root,this.appRoot),o=Object.keys(e);this.hasChanged(o)&&(this.list=o,t.hooks.entryOption.call(this.appRoot,e))}}catch(t){colorconsole.error(t.message),logger.add(t.message)}s()})}};
//# sourceMappingURL=manifest-watch-plugin.js.map