@insco/enigma-virtualbox
Version:
Generate an "Enigma Virtual Box" project file
121 lines (118 loc) • 6.43 kB
JavaScript
/**
* Version: 1.3.1
*
* Copyright (c) 2025 kjxbyz. All rights reserved.
*/
"use strict";var w=Object.create;var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var H=(e,t)=>{for(var i in t)y(e,i,{get:t[i],enumerable:!0})},R=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of j(t))!U.call(e,s)&&s!==i&&y(e,s,{get:()=>t[s],enumerable:!(r=C(t,s))||r.enumerable});return e};var k=(e,t,i)=>(i=e!=null?w(M(e)):{},R(t||!e||!e.__esModule?y(i,"default",{value:e,enumerable:!0}):i,e)),X=e=>R(y({},"__esModule",{value:!0}),e);var Q={};H(Q,{generate:()=>L,version:()=>S});module.exports=X(Q);var n=require("path"),o=require("fs"),O=k(require("handlebars")),D=require("minimatch"),N=require("lodash-es");var _=require("path"),P=e=>(0,_.join)(__dirname,"..","templates",e),W=`
<File>
<Type>3</Type>
<Name>{{{dirName}}}</Name>
<Action>0</Action>
<OverwriteDateTime>False</OverwriteDateTime>
<OverwriteAttributes>False</OverwriteAttributes>
<Files>{{{files}}}</Files>
<HideFromDialogs>0</HideFromDialogs>
</File>
`,G=`
<File>
<Type>2</Type>
<Name>{{{fileName}}}</Name>
<File>{{{filePath}}}</File>
<ActiveX>False</ActiveX>
<ActiveXInstall>False</ActiveXInstall>
<Action>0</Action>
<OverwriteDateTime>False</OverwriteDateTime>
<OverwriteAttributes>False</OverwriteAttributes>
<PassCommandLine>False</PassCommandLine>
<HideFromDialogs>0</HideFromDialogs>
</File>
`,B=`
<>
<InputFile>{{{input}}}</InputFile>
<OutputFile>{{{output}}}</OutputFile>
<Files>
<Enabled>True</Enabled>
<DeleteExtractedOnExit>{{{deleteExtractedOnExit}}}</DeleteExtractedOnExit>
<CompressFiles>{{{compressFiles}}}</CompressFiles>
<Files>
<File>
<Type>3</Type>
<Name>%DEFAULT FOLDER%</Name>
<Action>0</Action>
<OverwriteDateTime>False</OverwriteDateTime>
<OverwriteAttributes>False</OverwriteAttributes>
<HideFromDialogs>0</HideFromDialogs>
<Files>{{{files}}}</Files>
</File>
</Files>
</Files>
<Registries>
<Enabled>False</Enabled>
<Registries>
<Registry>
<Type>1</Type>
<Virtual>True</Virtual>
<Name>Classes</Name>
<ValueType>0</ValueType>
<Value/>
<Registries/>
</Registry>
<Registry>
<Type>1</Type>
<Virtual>True</Virtual>
<Name>User</Name>
<ValueType>0</ValueType>
<Value/>
<Registries/>
</Registry>
<Registry>
<Type>1</Type>
<Virtual>True</Virtual>
<Name>Machine</Name>
<ValueType>0</ValueType>
<Value/>
<Registries/>
</Registry>
<Registry>
<Type>1</Type>
<Virtual>True</Virtual>
<Name>Users</Name>
<ValueType>0</ValueType>
<Value/>
<Registries/>
</Registry>
<Registry>
<Type>1</Type>
<Virtual>True</Virtual>
<Name>Config</Name>
<ValueType>0</ValueType>
<Value/>
<Registries/>
</Registry>
</Registries>
</Registries>
<Packaging>
<Enabled>False</Enabled>
</Packaging>
<Options>
<ShareVirtualSystem>{{{shareVirtualSystem}}}</ShareVirtualSystem>
<MapExecutableWithTemporaryFile>{{{mapExecutableWithTemporaryFile}}}</MapExecutableWithTemporaryFile>
<TemporaryFileMask/>
<AllowRunningOfVirtualExeFiles>{{{allowRunningOfVirtualExeFiles}}}</AllowRunningOfVirtualExeFiles>
<ProcessesOfAnyPlatforms>{{{processesOfAnyPlatforms}}}</ProcessesOfAnyPlatforms>
</Options>
<Storage>
<Files>
<Enabled>False</Enabled>
<Folder>%DEFAULTFOLDER%\\</Folder>
<RandomFileNames>False</RandomFileNames>
<EncryptContent>False</EncryptContent>
</Files>
</Storage>
</>
`,f={PROJECT:P("project.template.hbs"),DIR:P("dir.template.hbs"),FILE:P("file.template.hbs")},b={PROJECT:B,DIR:W,FILE:G};var V=/^\s+?</gm,a={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"};var T=class{constructor(t,i){this.name=t,this.tree=i}};var J=e=>(0,o.readFileSync)((0,n.resolve)(e),"utf8"),z=e=>e.replace(V,"<"),x=(e,t,i)=>{let r;try{r=e?J(e.toLowerCase()==="default"?t:e):i,r=z(r)}catch(s){throw s instanceof Error?(s.message="Failed to load template. Template path: '"+e+`'.
`+s.message,s):"Failed to load template. Template path: '"+e+`'.
`+s}return r},v=e=>{let t=(0,o.readdirSync)(e),i=t.length,r=[];for(;i--;){let s=t[i],p=(0,n.resolve)(e,s);(0,o.lstatSync)(p).isDirectory()?r[i]=new T(s,v(p)):r[i]=s}return r},Y=(e,t,i,r)=>{let s=(l,A)=>{let E=[];return A.forEach(function(m){let g=m instanceof T,d=g?m.name:m,c=(0,n.join)(l,d),u,F;r&&(0,D.minimatch)(c,r,{windowsPathsNoEscape:!1,dot:!0})||(g?(F=s(c,m.tree),u=t({[a.DIR_NAME]:d,[a.FILES]:F})):u=i({[a.FILE_NAME]:m,[a.FILE_PATH]:c}),E.push(u))}),E.join("")},p;try{p=v(e)}catch(l){throw l instanceof Error?(l.message="Failed to read the directory tree of: '"+e+`'.
`+l.message,l):"Failed to read the directory tree of: '"+e+`'.
`+l}return s(e,p)},L=async(e,t)=>{t=(0,N.merge)({evbOptions:{deleteExtractedOnExit:"True",compressFiles:"True",shareVirtualSystem:"False",mapExecutableWithTemporaryFile:"True",allowRunningOfVirtualExeFiles:"True",processesOfAnyPlatforms:"False"}},t);let i=t.templatePath,r=t.evbOptions,s=x(i?.project,f.PROJECT,b.PROJECT),p=O.default.compile(s),l=x(i?.dir,f.DIR,b.DIR),A=O.default.compile(l),E=x(i?.file,f.FILE,b.FILE),m=O.default.compile(E),g=Y((0,n.resolve)(e),A,m,t.exclude||t.e),d=t.input||t.i,c=t.output||t.o,u=p({[a.INPUT_EXE]:(0,n.resolve)(d),[a.OUTPUT_EXE]:(0,n.resolve)(c),[a.OPT_DELETE_EXTRACTED]:r?.deleteExtractedOnExit||"True",[a.OPT_COMPRESS_FILES]:r?.compressFiles||"True",[a.OPT_SHARE_VIRTUAL_SYSTEM]:r?.shareVirtualSystem||"False",[a.OPT_MAP_WITH_TEMP]:r?.mapExecutableWithTemporaryFile||"True",[a.OPT_ALLOW_RUNNING_VIRTUAL_EXE]:r?.allowRunningOfVirtualExeFiles||"True",[a.OPT_PROCESSES_OF_ANY_PLATFORMS]:r?.processesOfAnyPlatforms||"False",[a.FILES]:g}),F=t.projectName||t.p||"project.evb",h=(0,n.resolve)(F);return(0,o.writeFileSync)(h,"\uFEFF"+u,"utf8"),h};var I="1.3.1";var S=I;0&&(module.exports={generate,version});