@insco/enigma-virtualbox
Version:
Generate an "Enigma Virtual Box" project file
13 lines (10 loc) • 3.69 kB
JavaScript
/**
* Version: 1.2.0
*
* Copyright (c) 2025 kjxbyz. All rights reserved.
*/
;var b=Object.create;var g=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var X=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},y=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!V.call(t,a)&&a!==r&&g(t,a,{get:()=>e[a],enumerable:!(s=U(e,a))||s.enumerable});return t};var w=(t,e,r)=>(r=t!=null?b(H(t)):{},y(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t)),G=t=>y(g({},"__esModule",{value:!0}),t);var v={};X(v,{generate:()=>W});module.exports=G(v);var l=require("path"),T=require("fs"),u=w(require("handlebars")),d=require("minimatch"),N=require("lodash-es"),F=t=>(0,l.join)(__dirname,"..","templates",t),_={PROJECT:F("project.template.hbs"),DIR:F("dir.template.hbs"),FILE:F("file.template.hbs")},A={PRE_TAG_INDENTS:/^\s+?</gm,LT:/</g,GT:/>/g,SLASH:/\//g},n={DIR_NAME:"dirName",FILES:"files",FILE_NAME:"fileName",FILE_PATH:"filePath",INPUT_EXE:"input",OUTPUT_EXE:"output",OPT_DELETE_EXTRACTED:"deleteExtractedOnExit",OPT_COMPRESS_FILES:"compressFiles",OPT_SHARE_VIRTUAL_SYSTEM:"shareVirtualSystem",OPT_MAP_WITH_TEMP:"mapExecutableWithTemporaryFile",OPT_ALLOW_RUNNING_VIRTUAL_EXE:"allowRunningOfVirtualExeFiles",OPT_PROCESSES_OF_ANY_PLATFORMS:"processesOfAnyPlatforms"},h="__LT__",D="__GT__",x="__SLASH__",I=t=>{let e;try{e=(0,T.readFileSync)((0,l.resolve)(t),"utf8"),e=e.replace(A.PRE_TAG_INDENTS,"<").replace(A.LT,h).replace(A.GT,D).replace(A.SLASH,x)}catch(r){throw r instanceof Error?(r.message="Failed to load template. Template path: '"+t+`'.
`+r.message,r):"Failed to load template. Template path: '"+t+`'.
`+r}return e},R=class{constructor(e,r){this.name=e,this.tree=r}},M=t=>{let e=(0,T.readdirSync)(t),r=e.length,s=[];for(;r--;){let a=e[r],o=(0,l.resolve)(t,a);(0,T.lstatSync)(o).isDirectory()?s[r]=new R(a,M(o)):s[r]=a}return s},j=(t,e,r,s)=>{let a=(i,L)=>{let m=[];return L.forEach(function(E){let P=E instanceof R,O=P?E.name:E,p=(0,l.join)(i,O),c,S;s&&(0,d.minimatch)(p,s,{windowsPathsNoEscape:!1,dot:!0})||(P?(S=a(p,E.tree),c=e({[n.DIR_NAME]:O,[n.FILES]:S})):c=r({[n.FILE_NAME]:E,[n.FILE_PATH]:p}),m.push(c))}),m.join("")},o;try{o=M(t)}catch(i){throw i instanceof Error?(i.message="Failed to read the directory tree of: '"+t+`'.
`+i.message,i):"Failed to read the directory tree of: '"+t+`'.
`+i}return a(t,o)},W=async(t,e)=>{e=(0,N.merge)({templatePath:{project:_.PROJECT,dir:_.DIR,file:_.FILE},evbOptions:{deleteExtractedOnExit:"True",compressFiles:"True",shareVirtualSystem:"False",mapExecutableWithTemporaryFile:"True",allowRunningOfVirtualExeFiles:"True",processesOfAnyPlatforms:"False"}},e);let r=e.templatePath,s=e.evbOptions,a=I(r?.project||_.PROJECT),o=u.default.compile(a),i=I(r?.dir||_.DIR),L=u.default.compile(i),m=I(r?.file||_.FILE),E=u.default.compile(m),P=j((0,l.resolve)(t),L,E,e.exclude||e.e),O=e.input||e.i,p=e.output||e.o,c=o({[n.INPUT_EXE]:(0,l.resolve)(O),[n.OUTPUT_EXE]:(0,l.resolve)(p),[n.OPT_DELETE_EXTRACTED]:s?.deleteExtractedOnExit||"True",[n.OPT_COMPRESS_FILES]:s?.compressFiles||"True",[n.OPT_SHARE_VIRTUAL_SYSTEM]:s?.shareVirtualSystem||"False",[n.OPT_MAP_WITH_TEMP]:s?.mapExecutableWithTemporaryFile||"True",[n.OPT_ALLOW_RUNNING_VIRTUAL_EXE]:s?.allowRunningOfVirtualExeFiles||"True",[n.OPT_PROCESSES_OF_ANY_PLATFORMS]:s?.processesOfAnyPlatforms||"False",[n.FILES]:P}).replace(RegExp(h,"mg"),"<").replace(RegExp(D,"mg"),">").replace(RegExp(x,"mg"),"/"),S=e.projectName||e.p||"project.evb",f=(0,l.resolve)(S);return(0,T.writeFileSync)(f,"\uFEFF"+c,"utf8"),f};0&&(module.exports={generate});