UNPKG

@winner-fed/winner-deploy

Version:

Generate a publication deployed by the See platform

8 lines (7 loc) 12.4 kB
/** build time: Tue Apr 15 2025 15:38:30 GMT+0800 (China Standard Time), build version 4.3.1 **/ var ae=Object.defineProperty;var q=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var Z=(i,t,n)=>t in i?ae(i,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[t]=n,M=(i,t)=>{for(var n in t||(t={}))pe.call(t,n)&&Z(i,n,t[n]);if(q)for(var n of q(t))fe.call(t,n)&&Z(i,n,t[n]);return i};var B=(i=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(i,{get:(t,n)=>(typeof require!="undefined"?require:t)[n]}):i)(function(i){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+i+'" is not supported')});import Se from"chalk";import $e from"path";import k from"fs-extra";import $ from"fs-extra";import{rimraf as re}from"rimraf";import V from"path";import E from"fs-extra";import me from"archiver";import W from"xml";var z=process.cwd(),X=function(t){let n={"&quot;":'"',"&apos;":"'","&lt;":"<","&gt;":">"},o=/(&quot;)|(&apos;)|(&lt;)|(&gt;)/g;return t&&t.replace?t.replace(o,function(c){return n[c]}):t},F=function(t,n){let o=n||"",c=V.resolve(z,t,o,"sysconfig.js");return E.pathExistsSync(c)},K=function(t){let n=V.resolve(z,t,"config.local.js");return E.pathExistsSync(n)},j=function(t,n,o,c){let r=V.join(z,n);n!=="/"&&E.ensureDirSync(r);let e=E.createWriteStream(`${n==="/"?".":r}/${t}.zip`);e.on("close",function(){setTimeout(function(){c&&c()})});let s=me("zip",{zlib:{level:9}});s.on("error",function(l){console.error(),console.error(l.stack||l),l.details&&console.error(l.details)}),s.pipe(e),s.directory(o,!1),s.finalize()},U=function(t,n,o){let{type:c,label:r,name:e,tooltip:s="",visible:l="true",required:p="false",fixed:y="false",fold:f="false",options:a="",validate:m="",upgrade:u="false"}=t,x=t.default;if(o==="form"){let b=W({form:[{_attr:{name:e,tooltip:s,visible:l,required:p,fixed:y,fold:f,options:a,validate:m,upgrade:u}},n]});return X(b)}let g=c==="complexSelect"?{default:t.default}:{},T=W({field:[{_attr:M({type:c,label:r,name:e,tooltip:s,visible:l,required:p,fixed:y,fold:f,options:a,validate:m,upgrade:u},g)},n||x]});return X(T)},G=function(t){let o=t.children.map(c=>{let e=c.children.map(s=>U(s)).join("");return U(c,e,"form")}).join("");return U(t,o)},L=function i(t,n,o="",c=""){for(let r=0;r<t.length;r++){let e=t[r];if(e.type==="complexSelect"?(e.fullName=`${e.name}`,e.fullPath=`${e.type}`):(e.fullName=`${o===""?"":o+"."}${e.name}`,e.fullPath=`${c===""?"":c+"-"}${e.type}`),n(e))return e;if(e.children&&e.children.length>0){let s=i(e.children,n,e.fullName,e.fullPath);if(s)return s}}return null};function H(i="python"){return i==="python"?"py":"sh"}import N from"fs-extra";import ue from"path";import w from"lodash.template";import ye from"xml";import ge from"@babel/core";var de=["input","editor","select","switch","smallfile","table","mselect","switchForm","complexSelect","division"],I=i=>ue.resolve(__dirname,`../templates/see/${i}`),Q=i=>{let t=i.type;if(!de.includes(t))return"";let{label:n,name:o,tooltip:c="",visible:r="true",required:e="false",fixed:s="false",fold:l="false",options:p="",validate:y="",upgrade:f="false"}=i,a=i.default;if(t==="table"){let x=i.keys||[];a=(i.columns||x).map(T=>Q(T)).join(` `)}else if(t==="switchForm"||t==="division")a=i.children.map(g=>Q(g)).join(` `);else{if(t==="complexSelect")return G(i);t==="editor"?a=typeof a=="object"?[JSON.stringify(a)]:[a]:a=[a]}let m=t==="switchForm"?{default:i.default}:{},u=ye({field:[{_attr:M({type:t,label:n,name:o,tooltip:c,visible:r,required:e,fixed:s,fold:l,options:p,validate:y,upgrade:f},m)},...Array.isArray(a)?a:[a]]});return X(u)},Y=function({system:t,type:n,name:o,appType:c,appName:r,group:e,version:s,configFileName:l="config.local",variables:p=[],description:y,scriptsType:f="python"}){let a=N.readFileSync(I(`${f}/deploy.xml`)).toString();return w(a,{interpolate:/{{([\s\S]+?)}}/g})({system:t,type:n,name:o,appName:r,appType:c,group:e,version:s,configFileName:l,variables:(()=>p.map(m=>Q(m)).join(` `))(),description:y})},R=function(t,n){let o=N.readFileSync(I(`${n.scriptsType}/scripts/${t}.${n.scriptsType==="python"?"py":"sh"}`)).toString();return w(o,{interpolate:/{{([\s\S]+?)}}/g})(n)},v=function(t,n=[]){let{code:o}=ge.transformFileSync(t,{babelrc:!1,plugins:[function(){return{visitor:{Literal(r){if(r.parentPath.isProperty()){let e=r.parentPath.get("key").node,s=e.name;e.type==="StringLiteral"&&(e.type="Identifier",e.name=e.value,s=e.value);let l=L(n,p=>s===p.name);if(l){if(l.fullPath.includes("complexSelect")&&(l.name=l.fullName),r.isStringLiteral()){r.node.value=`$!{${l.name}}`;return}if(r.isNumericLiteral()){r.node.value=`$!{${l.name}}`;return}if(r.isBooleanLiteral()){if(r.node.type="StringLiteral",l.fullPath.includes("complexSelect")){r.node.value=`$!{${l.fullName}}`;return}r.node.value=`[NO_QUOTATION_MARKS]\${${l.name}}[NO_QUOTATION_MARKS]`}}}},ArrayExpression(r){if(r.parentPath.isProperty()){let e=L(n,s=>r.parentPath.get("key").node.name===s.name);if(e){if(e.fullPath.includes("editor")){r.node.type="StringLiteral",r.node.value=`[NO_QUOTATION_MARKS]\${${e.name}}[NO_QUOTATION_MARKS]`;return}e.fullPath.includes("complexSelect")&&(e.name=e.fullName);let s="",l=e.keys||[],p=e.columns||l;if(e.options){s=`[NO_QUOTATION_MARKS][#foreach($row in $${e.name}) '$row' , #end][NO_QUOTATION_MARKS]`,r.node.type="StringLiteral",r.node.value=s;return}p&&p.length&&p.forEach(f=>{s+=`${f.name}: '$!{row.${f.name}}',`}),r.node.type="StringLiteral",r.node.value=`[NO_QUOTATION_MARKS][#foreach($row in $${e.name}) {${s}}, #end][NO_QUOTATION_MARKS]`}}},ObjectExpression(r){if(r.parentPath.isProperty()){let e=r.parentPath.get("key").node,s=e.name;if(e){let l=L(n,p=>s===p.name);if(l){if(r.node.type="StringLiteral",l.fullPath.includes("editor")){r.node.value=`[NO_QUOTATION_MARKS]\${${l.name}}[NO_QUOTATION_MARKS]`;return}r.node.value=`[NO_QUOTATION_MARKS]\${${l.name}}[NO_QUOTATION_MARKS]`;return}}}}}}}],retainLines:!0});return o.replace(/"\[NO_QUOTATION_MARKS](.*)\[NO_QUOTATION_MARKS]"/g,"$1")},ee=function({system:t,type:n,name:o,appName:c,appType:r,version:e,group:s,configFileName:l="config.local",variables:p=[],description:y,web_app_web_service_name:f,dockerImage:a}){let m=N.readFileSync(I("docker/deploy.xml")).toString();return w(m,{interpolate:/{{([\s\S]+?)}}/g})({system:t,type:n,name:o,appName:c,appType:r,version:e,group:s,configFileName:l,variables:(()=>p.map(u=>Q(u)).join(` `))(),description:y,web_app_web_service_name:f,dockerImage:a})},te=function(t){let n=N.readFileSync(I("docker/k8s-deploy-res.yaml")).toString();return w(n,{interpolate:/{{([\s\S]+?)}}/g})(t)},ne=function(t){let n=N.readFileSync(I("docker/Dockerfile")).toString();return w(n)(t)};var d="tmp",oe=function(t,n,o){let{system:c,type:r,name:e,appType:s,appName:l,group:p,version:y,template:f,variables:a=[],configName:m,outputName:u="dist",description:x,scriptsType:g,seePackagePath:T,tplPath:b}=n;$.ensureDirSync(d),$.ensureDirSync(`${d}/scripts`),$.ensureDirSync(`${d}/template`);let A=H(g);g==="python"&&$.outputFileSync(`./${d}/scripts/${e}/utils.${A}`,R("utils",{scriptsType:g})),$.outputFileSync(`./${d}/scripts/${e}/install.${A}`,R("install",{name:e,type:r,scriptsType:g})),$.outputFileSync(`./${d}/scripts/${e}/afterInstall.${A}`,R("afterInstall",{name:e,scriptsType:g})),$.outputFileSync(`./${d}/scripts/${e}/uninstall.${A}`,R("uninstall",{name:e,type:r,scriptsType:g}));let D=!1,P=!1;if(b&&Object.keys(b).length>0)for(let[S,_]of Object.entries(b))S==="deploy.xml"?($.copyFileSync(_,`./${d}/deploy.xml`),D=!0):$.copyFileSync(_,`./${d}/template/${S}`),(S==="sysconfig.js"||S==="config.local.js")&&(P=!0);D||$.outputFileSync(`./${d}/deploy.xml`,Y({system:c,type:r,name:e,appType:s,appName:l,group:p,version:y,configFileName:m,variables:a,description:x,scriptsType:g})),P||(K(u)?$.outputFileSync(`./${d}/template/config.local.js`,f?v(f,a):""):F(u)||F(u,e)?(m="sysconfig",$.outputFileSync(`./${d}/template/sysconfig.js`,f?v(f,a):"")):m&&$.outputFileSync(`./${d}/template/${m}.js`,f?v(f,a):"")),o?o(S=>{j(t,T,d,()=>{re.sync(d),typeof S=="function"&&S()})}):j(t,T,d,()=>{re.sync(d)})};import ie from"path";import O from"fs-extra";import{rimraf as se}from"rimraf";var h="tmp",le=function(t,n,o){let{system:c,type:r,name:e,appType:s,appName:l,version:p,group:y,template:f,variables:a,configName:m,outputName:u,description:x,seePackagePath:g,dockerImage:T=p.indexOf("-")>0?`isee1.0-docker-dev-local/${e}`:`isee1.0-docker-release-local/${e}`}=n;O.ensureDirSync(h),O.ensureDirSync("docker"),O.pathExistsSync(ie.resolve(process.cwd(),"docker/Dockerfile"))||O.outputFileSync(ie.resolve(process.cwd(),"docker/Dockerfile"),ne({name:e,type:r})),O.ensureDirSync(`${h}/scripts`),O.ensureDirSync(`${h}/template`),K(u)?O.outputFileSync(`./${h}/template/${e}/config.local.js`,f?v(f,a):""):F(u)||F(u,e)?(m="sysconfig",O.outputFileSync(`./${h}/template/${e}/sysconfig.js`,f?v(f,a):"")):m&&O.outputFileSync(`./${h}/template/${e}/${m}.js`,f?v(f,a):""),O.outputFileSync(`./${h}/template/k8s-deploy-res.yaml`,te({configFileName:m})),O.outputFileSync(`./${h}/deploy.xml`,ee({system:c,type:r,name:e,appName:l,appType:s,version:p,group:y,configFileName:m,variables:a,description:x,web_app_web_service_name:`${e}-web`,dockerImage:T})),o?o(b=>{j(t,g,h,()=>{se.sync(h),typeof b=="function"&&b()})}):j(t,g,h,()=>{se.sync(h)})};var he=process.cwd();function xe(i,t,n){let o="",c;if(i==="bizframe"){o=k.readdirSync(`./${n}`).find(r=>/manifest\.[0-9]+\.json/.test(r));try{c=k.readJsonSync(`./${n}/${o}`)}catch(r){console.error(`${n} \u76EE\u5F55\u4E0B\u7684 manifest.xxx.json \u89E3\u6790\u5931\u8D25\uFF01\u8BF7\u786E\u8BA4\u6B64\u6587\u4EF6\u662F\u5426\u5B58\u5728\u3002\u6216\u53EF\u4EE5\u5C06 scriptsType \u8BBE\u7F6E\u4E3A bash \u8BD5\u8BD5\u770B\u3002`),process.exit(0)}}return i==="subsystem"&&(o=k.readdirSync(`./${n}/${t}`).find(r=>/manifest\.[0-9]+\.json/.test(r)),c=k.readJsonSync(`./${n}/${t}/${o}`)),{manifest:o,manifestJson:c}}var He=function({system:t="winner-front",type:n="bizframe",name:o,appType:c,appName:r,group:e="bizframe",version:s,configName:l="config.local",outputName:p="dist",templateFunc:y,variablesFunc:f,copyFiles:a,description:m,seePackageName:u,seePackagePath:x="package",seePackageType:g="web",dockerImage:T,scriptsType:b="python",tplPath:A={}},D){if(!o||!s)throw new Error("\u5E94\u7528\u540D\u79F0\u548C\u5E94\u7528\u7248\u672C\u4E0D\u80FD\u7F3A\u5931~");if(o=o.replace(/@/gi,"").replace(/\//gi,"-"),typeof u=="string"&&u&&(u=u.replace(/@/gi,"").replace(/\//gi,"-")),c=c||o,r=r||o,f=f||function(){try{let{variables:P}=B($e.resolve(he,"build","package","./variables.js"));return P||[]}catch(P){return console.error(P),[]}},y=y||function(){return n==="bizframe"?`./${p}/config.local.js`:`./${p}/${o}/sysconfig.js`},g==="docker"){le(u||`${t}-${o}-${s}`,{system:t,type:n,name:o,appType:c,appName:r,group:e,version:s,configName:l,outputName:p,template:y(),variables:f(),seePackagePath:x,description:m,dockerImage:T},P=>{console.log(),console.log("docker \u5BB9\u5668\u5316\u90E8\u7F72\u7684 SEE \u53D1\u5E03\u7269\u5236\u4F5C\u5B8C\u6210\uFF0C\u60A8\u53EF\u4EE5\u5728 SEE \u5E73\u53F0\u4E0A\u4F20\u5E76\u90E8\u7F72\u5E94\u7528\u3002"),P(D)});return}oe(u||`${t}-${o}-${s}`,{system:t,type:n,name:o,group:e,appType:c,appName:r,version:s,configName:l,outputName:p,template:y(),variables:f(),seePackagePath:x,description:m,scriptsType:b,tplPath:A},P=>{if(b==="python"){let{manifest:S,manifestJson:_}=xe(n,o,p);for(let C in _)if(_.hasOwnProperty(C)){let{path:J,dir:ce}=_[C];k.ensureDirSync(`./tmp/source/${ce}`),k.copyFileSync(`./${p}/${J}`,`./tmp/source/${J}`)}k.outputJSONSync(`./tmp/scripts/${o}/conf/${S}`,_)}else k.ensureDirSync("./tmp/source"),k.copySync(`./${p}`,"./tmp/source");Array.isArray(a)&&a.length&&a.forEach(S=>{k.ensureFileSync(`./tmp/source/${o}/${S}`),k.copyFileSync(`./${p}/${o}/${S}`,`./tmp/source/${o}/${S}`)}),console.log(),console.log(`\u53D1\u5E03\u7269\u5236\u4F5C\u5B8C\u6210\uFF0C\u60A8\u53EF\u4EE5\u5728 SEE \u5E73\u53F0\u4E0A\u4F20\u5E76\u90E8\u7F72\u5E94\u7528\u3002\u6CE8\u610F\uFF1A${Se.yellow("\u5B50\u7CFB\u7EDF\u53D1\u5E03\u7269\u7684\u5B89\u88C5\u76EE\u5F55\u9700\u8981\u6307\u5B9A\u5230\u5177\u4F53\u7684\u5E94\u7528\u76EE\u5F55")}\u3002\u6BD4\u5982/home/hsiar/hsiar-green/html/\u3002 `),P(D)})};export{He as generateSeePackageZip};