@oppo-minigame/cli
Version:
Command line interface for rapid OPPO minigame development
1 lines • 1.32 kB
JavaScript
const fs=require("fs-extra"),path=require("path"),jszip=require("jszip"),signer=require("./bundle"),{EXCLUDES:EXCLUDES}=require("../config/config"),COMPRESS_OPTS={type:"nodebuffer",compression:"DEFLATE",compressionOptions:{level:9}};function sign(e,i,s){const n=fs.readFileSync(e.signFiles.privatekey),t=fs.readFileSync(e.signFiles.certificate),r=new jszip,p=[],o=path.join(e.output,e.rpkName+".zip");let a=path.join(e.output,e.rpkName);a+=i?".rpk":".signed.rpk",parse(e.input,".",(i,s)=>{"dist/"===i.substr(0,5)||"sign/"===i.substr(0,5)||-1!==EXCLUDES.indexOf(i)||0!==e.excludes.length&&0!==e.excludes.filter(e=>i.startsWith(e)).length||(console.log("name include",i),p.push({name:Buffer.from(i),file:s,hash:signer.hashFile(s,fs)}),r.file(i,fs.readFileSync(s)))},fs),fs.ensureDirSync(e.output),r.generateNodeStream(COMPRESS_OPTS).pipe(fs.createWriteStream(o)).on("finish",function(){signer.signZip({zip:o,files:p},n,t,a),fs.existsSync(o)&&fs.unlinkSync(o),s&&s(a)})}let parse=(e,i,s,n)=>{i=i||".";const t=path.posix.join(e,i);let r;n.readdirSync(t).forEach(function(p){const o=path.posix.join(t,p),a=n.statSync(o);if(a.isFile()){const e=i.split(path.sep).join(path.posix.sep);r=path.posix.join(e,path.basename(p)),s(r,o)}else if(a.isDirectory()){const t=path.posix.join(i,p);parse(e,t,s,n)}})};module.exports={sign:sign};