jjb-cmd 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -16
- package/src/auth.js +1 -1
- package/src/config.js +1 -1
- package/src/crypto-utils.js +1 -1
- package/src/logout.js +1 -1
- package/src/password-input.js +1 -1
- package/src/publish.js +1 -1
- package/src/push.js +1 -1
- package/src/utils.js +1 -1
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"env": "prod",
|
|
5
5
|
"httpMethod": "http",
|
|
6
6
|
"pushMessage": "yes",
|
|
7
|
-
"version": "3.0.
|
|
7
|
+
"version": "3.0.1",
|
|
8
8
|
"description": "jjb-cmd命令行工具",
|
|
9
9
|
"main": "index.js",
|
|
10
10
|
"scripts": {
|
|
@@ -17,23 +17,9 @@
|
|
|
17
17
|
"author": "jiaoxiwei",
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@babel/core": "^7.19.3",
|
|
21
|
-
"@babel/generator": "^7.26.0",
|
|
22
|
-
"@babel/parser": "^7.26.1",
|
|
23
|
-
"@babel/preset-env": "^7.23.2",
|
|
24
|
-
"@babel/preset-react": "^7.18.6",
|
|
25
|
-
"@babel/preset-typescript": "^7.23.2",
|
|
26
|
-
"@babel/traverse": "^7.25.9",
|
|
27
|
-
"@cqsjjb/react-code-optimization": "latest",
|
|
28
20
|
"axios": "^1.1.3",
|
|
29
|
-
"better-sqlite3": "^12.6.2",
|
|
30
21
|
"chalk": "2.4.0",
|
|
31
22
|
"commander": "^1.3.2",
|
|
32
|
-
"
|
|
33
|
-
"inquirer": "^8.2.7",
|
|
34
|
-
"jenkins": "^1.0.2",
|
|
35
|
-
"prettier": "^3.3.3",
|
|
36
|
-
"request": "2.88.2",
|
|
37
|
-
"single-line-log": "1.1.2"
|
|
23
|
+
"inquirer": "^8.2.7"
|
|
38
24
|
}
|
|
39
25
|
}
|
package/src/auth.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a0_0x3f95(_0x240c69,_0x4ef282){_0x240c69=_0x240c69-0xf5;const _0x999db0=a0_0x999d();let _0x3f9503=_0x999db0[_0x240c69];return _0x3f9503;}const a0_0x4882a8=a0_0x3f95;(function(_0x24a844,_0x3f532c){const _0x2d98ed=a0_0x3f95,_0x503b2f=_0x24a844();while(!![]){try{const _0x5719bf=parseInt(_0x2d98ed(0x10b))/0x1+-parseInt(_0x2d98ed(0xff))/0x2*(parseInt(_0x2d98ed(0x100))/0x3)+parseInt(_0x2d98ed(0xf7))/0x4*(parseInt(_0x2d98ed(0xfe))/0x5)+parseInt(_0x2d98ed(0x113))/0x6*(parseInt(_0x2d98ed(0x118))/0x7)+-parseInt(_0x2d98ed(0xf6))/0x8*(parseInt(_0x2d98ed(0x115))/0x9)+parseInt(_0x2d98ed(0xfc))/0xa*(-parseInt(_0x2d98ed(0x10f))/0xb)+-parseInt(_0x2d98ed(0x114))/0xc*(-parseInt(_0x2d98ed(0xfd))/0xd);if(_0x5719bf===_0x3f532c)break;else _0x503b2f['push'](_0x503b2f['shift']());}catch(_0x12d057){_0x503b2f['push'](_0x503b2f['shift']());}}}(a0_0x999d,0x3f49a));const axios=require(a0_0x4882a8(0xfa)),path=require('path'),{getApiHost}=require(a0_0x4882a8(0x112)),{logInfo,logSuccess,logError,fileExists,deleteFile}=require(a0_0x4882a8(0x117)),{saveAuth,deleteAuth}=require(a0_0x4882a8(0x102)),{getCredentials,interactiveAuth}=require(a0_0x4882a8(0x108));module[a0_0x4882a8(0x105)]=async _0x1b3682=>{const _0x1065c5=a0_0x4882a8,_0x23acc8=path[_0x1065c5(0x10d)](__dirname,_0x1065c5(0x109));try{logInfo('启动交互式登录流程');const _0x3b05f2=await interactiveAuth(),_0x561e44=_0x3b05f2['username'],_0x4abe33=_0x3b05f2[_0x1065c5(0x10e)];logInfo(_0x1065c5(0x111));const _0x143d2c=await axios['post'](getApiHost()+_0x1065c5(0x103),{'username':_0x561e44,'password':_0x4abe33});if(_0x143d2c[_0x1065c5(0x107)]['status']){logSuccess('用户认证成功');try{saveAuth(_0x561e44,_0x4abe33,_0x23acc8),logSuccess('认证信息已安全加密存储');}catch(_0x1637e7){logError(_0x1065c5(0x104)+_0x1637e7['message']),process[_0x1065c5(0x110)](0x1);}}else logError(_0x1065c5(0x106)+(_0x143d2c[_0x1065c5(0x107)][_0x1065c5(0xf8)]||_0x1065c5(0x10c))),fileExists(_0x23acc8)&&(deleteAuth(_0x23acc8),logInfo('已清理无效的认证信息')),process[_0x1065c5(0x110)](0x1);}catch(_0x15d592){if(_0x15d592[_0x1065c5(0xf8)]['includes']('用户取消输入'))logError('用户取消登录操作');else{if(_0x15d592[_0x1065c5(0x10a)]){const _0x2ab499=_0x15d592[_0x1065c5(0x10a)][_0x1065c5(0x101)],_0x168fab=_0x15d592[_0x1065c5(0x10a)][_0x1065c5(0x107)]?.[_0x1065c5(0xf8)]||_0x15d592[_0x1065c5(0xf8)];_0x2ab499===0x191||_0x2ab499===0x193?logError(_0x1065c5(0x116)+_0x2ab499+'):\x20用户名或密码错误'):logError(_0x1065c5(0xf5)+_0x2ab499+_0x1065c5(0xf9)+_0x168fab);}else _0x15d592[_0x1065c5(0xfb)]?logError('网络连接失败:\x20无法连接到服务器'):logError('登录失败:\x20'+_0x15d592[_0x1065c5(0xf8)]);}process[_0x1065c5(0x110)](0x1);}};function a0_0x999d(){const _0x3dd43a=['password','457468VpIZvj','exit','正在验证用户凭证...','./config','6OpWvyb','2334684AfDbrV','179037NQaXif','认证失败\x20(','./utils','1671614SIOzLD','请求失败\x20(','16iGmBWS','143068psRLNP','message','):\x20','axios','request','60fQvpQQ','13jMWfOL','40jJznKJ','10zcqYke','187965GNLCVO','status','./crypto-utils','/api/auth','保存认证信息失败:\x20','exports','认证失败:\x20','data','./password-input','../.auth','response','142320fEEXoM','未知错误','join'];a0_0x999d=function(){return _0x3dd43a;};return a0_0x999d();}
|
package/src/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a1_0x2b3b81=a1_0x563e;(function(_0x11c763,_0x14cc35){const _0x1f0f6b=a1_0x563e,_0x4f5168=_0x11c763();while(!![]){try{const _0x2c23d8=parseInt(_0x1f0f6b(0x14f))/0x1*(-parseInt(_0x1f0f6b(0x16b))/0x2)+-parseInt(_0x1f0f6b(0x163))/0x3+parseInt(_0x1f0f6b(0x16d))/0x4+-parseInt(_0x1f0f6b(0x152))/0x5*(-parseInt(_0x1f0f6b(0x165))/0x6)+parseInt(_0x1f0f6b(0x167))/0x7+parseInt(_0x1f0f6b(0x14a))/0x8*(-parseInt(_0x1f0f6b(0x14c))/0x9)+parseInt(_0x1f0f6b(0x16c))/0xa;if(_0x2c23d8===_0x14cc35)break;else _0x4f5168['push'](_0x4f5168['shift']());}catch(_0xfbef9f){_0x4f5168['push'](_0x4f5168['shift']());}}}(a1_0x4200,0x61c37));function a1_0x563e(_0x448a11,_0x42dbb6){_0x448a11=_0x448a11-0x149;const _0x420036=a1_0x4200();let _0x563e05=_0x420036[_0x448a11];return _0x563e05;}function a1_0x4200(){const _0x5933bd=['jjb-assembly-','http://192.168.1.242:10985','snBxJ2i5kYarGGcsojhY','httpMethod','API_HOST_TEST','GIT_TEMP_DIR','d4wQ7dzEjYPsgVbKnYei','join','CONFIG_FILE_HOST','toString','API_HOST','e9njpBd1nS_LREN8GFpR','getApiHost','test','path','1901988EeFQWr','G4HJRsHr9D7Ssmixegw2','948582wsdLYE','https://jcloud.cqjjb.cn','645211vQKvpF','now','parse','http','2FWGgal','12010280OUFyGr','241944IhvJeh','tmpdir','https://cdn.cqjjb.cn/jjb-cloud-config','hLqARY89CN6fUD3yg4NL','TEMPLATE_FOLDER','../package.json','177512hjAeDw','readFileSync','9ekEiIg','ywPtT3xCG6b_vAxp6sTj','FqNrmFAgrxasMrbbjvq9','771354LuIVhV','jjb-assembly-java','CLOUD_PROJECT','15DXdqkF','http://120.26.210.58:8089'];a1_0x4200=function(){return _0x5933bd;};return a1_0x4200();}const os=require('os'),path=require(a1_0x2b3b81(0x162)),fs=require('fs'),API_HOST='http://120.26.210.58:8088',API_HOST_HTTPS=a1_0x2b3b81(0x166),API_HOST_TEST=a1_0x2b3b81(0x153);exports[a1_0x2b3b81(0x15c)]=a1_0x2b3b81(0x16f),exports[a1_0x2b3b81(0x15e)]=API_HOST,exports[a1_0x2b3b81(0x158)]=API_HOST_TEST,exports['GIT_HOST']=a1_0x2b3b81(0x155),exports[a1_0x2b3b81(0x159)]=a1_0x2b3b81(0x154)+Date[a1_0x2b3b81(0x168)](),exports['GIT_TEMP_JAVA']=a1_0x2b3b81(0x150),exports[a1_0x2b3b81(0x151)]={'common':{'token':a1_0x2b3b81(0x164),'projectId':0x117},'react-admin-component':{'token':'FT3pKzxpRynFkmddJ9Bs','projectId':0x154},'jjb-dva-runtime':{'token':a1_0x2b3b81(0x170),'projectId':0x23b},'jjb-common-lib':{'token':a1_0x2b3b81(0x15f),'projectId':0x23c},'jjb-common-decorator':{'token':'gPSit8aJsLVmNzuQ5Cy4','projectId':0x23e},'vue-unisass-component':{'token':a1_0x2b3b81(0x15a),'projectId':0x153},'react-component':{'token':a1_0x2b3b81(0x156),'projectId':0x33f},'micro-app-ts':{'token':'7V-YUxhmh51Mdhgx4rq4','projectId':0x33e},'micro-app':{'token':a1_0x2b3b81(0x14e),'projectId':0x33d},'lib':{'token':a1_0x2b3b81(0x14d),'projectId':0x33c}},exports[a1_0x2b3b81(0x171)]=path[a1_0x2b3b81(0x15b)](os[a1_0x2b3b81(0x16e)](),exports[a1_0x2b3b81(0x159)]),exports[a1_0x2b3b81(0x160)]=()=>{const _0x1cf72a=a1_0x2b3b81;try{const _0x45074=JSON[_0x1cf72a(0x169)](fs[_0x1cf72a(0x14b)](path[_0x1cf72a(0x15b)](__dirname,_0x1cf72a(0x149)))[_0x1cf72a(0x15d)]());return _0x45074['env']===_0x1cf72a(0x161)?API_HOST_TEST:_0x45074[_0x1cf72a(0x157)]===_0x1cf72a(0x16a)?API_HOST:API_HOST_HTTPS;}catch(_0x191647){return API_HOST_HTTPS;}};
|
package/src/crypto-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a2_0x48a6c6=a2_0x333c;(function(_0x22ad61,_0x543ea4){const _0x16fb82=a2_0x333c,_0x1bfec9=_0x22ad61();while(!![]){try{const _0x569945=parseInt(_0x16fb82(0x10f))/0x1*(parseInt(_0x16fb82(0xf3))/0x2)+-parseInt(_0x16fb82(0x114))/0x3+parseInt(_0x16fb82(0x115))/0x4*(-parseInt(_0x16fb82(0x109))/0x5)+parseInt(_0x16fb82(0xf6))/0x6+parseInt(_0x16fb82(0x104))/0x7*(parseInt(_0x16fb82(0x11e))/0x8)+parseInt(_0x16fb82(0x120))/0x9+-parseInt(_0x16fb82(0x11c))/0xa*(parseInt(_0x16fb82(0x123))/0xb);if(_0x569945===_0x543ea4)break;else _0x1bfec9['push'](_0x1bfec9['shift']());}catch(_0x5569f0){_0x1bfec9['push'](_0x1bfec9['shift']());}}}(a2_0x52e9,0xe4a1c));const crypto=require('crypto'),fs=require('fs'),path=require('path'),CRYPTO_CONFIG={'algorithm':'aes-256-cbc','keyLength':0x20,'ivLength':0x10,'saltLength':0x20};function deriveKey(_0x5c2863,_0x450fd7){const _0x3d3907=a2_0x333c;return crypto['pbkdf2Sync'](_0x5c2863,_0x450fd7,0x186a0,CRYPTO_CONFIG[_0x3d3907(0x113)],_0x3d3907(0x11b));}function generateSalt(){const _0x360495=a2_0x333c;return crypto[_0x360495(0xf4)](CRYPTO_CONFIG[_0x360495(0x119)]);}function generateIV(){return crypto['randomBytes'](CRYPTO_CONFIG['ivLength']);}function encrypt(_0x2fdec1,_0x4ce915){const _0x2499bd=a2_0x333c;try{const _0x3ba3f4=generateSalt(),_0xf931e5=generateIV(),_0x57a345=deriveKey(_0x4ce915,_0x3ba3f4),_0x4885dd=crypto[_0x2499bd(0x116)](CRYPTO_CONFIG[_0x2499bd(0x106)],_0x57a345,_0xf931e5);_0x4885dd[_0x2499bd(0x108)](!![]);let _0x30b3a5=_0x4885dd[_0x2499bd(0x121)](_0x2fdec1,_0x2499bd(0xff),'hex');_0x30b3a5+=_0x4885dd[_0x2499bd(0xf7)](_0x2499bd(0xfa));const _0x1ba9e9=Buffer[_0x2499bd(0x101)]([_0x3ba3f4,_0xf931e5,Buffer[_0x2499bd(0x11a)](_0x30b3a5,_0x2499bd(0xfa))]);return _0x1ba9e9[_0x2499bd(0x111)](_0x2499bd(0x11d));}catch(_0x5d3345){throw new Error(_0x2499bd(0x10b)+_0x5d3345[_0x2499bd(0xf8)]);}}function decrypt(_0x2f9d09,_0x5134de){const _0x458d07=a2_0x333c;try{const _0x13025b=Buffer[_0x458d07(0x11a)](_0x2f9d09,_0x458d07(0x11d)),_0x3b2b67=_0x13025b[_0x458d07(0xfb)](0x0,CRYPTO_CONFIG['saltLength']),_0x4a1e8d=_0x13025b[_0x458d07(0xfb)](CRYPTO_CONFIG['saltLength'],CRYPTO_CONFIG[_0x458d07(0x119)]+CRYPTO_CONFIG['ivLength']),_0xf31b50=_0x13025b[_0x458d07(0xfb)](CRYPTO_CONFIG[_0x458d07(0x119)]+CRYPTO_CONFIG[_0x458d07(0x10a)]),_0x359409=deriveKey(_0x5134de,_0x3b2b67),_0x440856=crypto[_0x458d07(0x110)](CRYPTO_CONFIG[_0x458d07(0x106)],_0x359409,_0x4a1e8d);_0x440856[_0x458d07(0x108)](!![]);let _0x13ffcb=_0x440856[_0x458d07(0x121)](_0xf31b50,null,_0x458d07(0xff));return _0x13ffcb+=_0x440856[_0x458d07(0xf7)](_0x458d07(0xff)),_0x13ffcb;}catch(_0xd7cb66){throw new Error(_0x458d07(0x10c)+_0xd7cb66[_0x458d07(0xf8)]);}}function a2_0x333c(_0x5679ac,_0x11acff){_0x5679ac=_0x5679ac-0xf3;const _0x52e9bd=a2_0x52e9();let _0x333c2d=_0x52e9bd[_0x5679ac];return _0x333c2d;}function a2_0x52e9(){const _0x4af42d=['createHash','4592814mHSqbs','final','message','认证文件不存在','hex','slice','读取认证信息失败:\x20','删除认证文件失败:\x20','unknown','utf8','digest','concat','exports','split','1402681FJDpZs','hostname','algorithm','认证数据格式错误','setAutoPadding','18390eLsgrw','ivLength','加密失败:\x20','解密失败:\x20','arch','readFileSync','363437DYixLh','createDecipheriv','toString','unlinkSync','keyLength','547992QFTeSB','12WawDnC','createCipheriv','join','username','saltLength','from','sha512','2670ezWxWi','base64','40tsdGdp','platform','14011164iLgGIu','update','sha256','150282LgALmv','8uSVxtq','randomBytes'];a2_0x52e9=function(){return _0x4af42d;};return a2_0x52e9();}function generateDeviceKey(){const _0x53d526=a2_0x333c,_0x365325=require('os');let _0x58cdb2=_0x53d526(0xfe);try{_0x58cdb2=_0x365325['userInfo']()[_0x53d526(0x118)]||_0x53d526(0xfe);}catch(_0x35e4c7){_0x58cdb2=process.env.USER||process.env.LOGNAME||process.env.USERNAME||'unknown';}const _0x5bfd0c=[_0x365325[_0x53d526(0x11f)](),_0x365325[_0x53d526(0x10d)](),_0x365325[_0x53d526(0x105)](),_0x58cdb2][_0x53d526(0x117)]('|');return crypto[_0x53d526(0xf5)](_0x53d526(0x122))['update'](_0x5bfd0c)[_0x53d526(0x100)]('hex');}function saveAuth(_0x136f80,_0x2de877,_0x444e0e){const _0x5ef95a=a2_0x333c;try{const _0x20cd29=generateDeviceKey(),_0x55f372=_0x136f80+'/'+_0x2de877,_0x4145c9=encrypt(_0x55f372,_0x20cd29);return fs['writeFileSync'](_0x444e0e,_0x4145c9,{'mode':0x180}),!![];}catch(_0x59247c){throw new Error('保存认证信息失败:\x20'+_0x59247c[_0x5ef95a(0xf8)]);}}function loadAuth(_0x4354d7){const _0x5535a4=a2_0x333c;try{if(!fs['existsSync'](_0x4354d7))throw new Error(_0x5535a4(0xf9));const _0x270bc3=generateDeviceKey(),_0x458cae=fs[_0x5535a4(0x10e)](_0x4354d7,_0x5535a4(0xff)),_0x5c82ce=decrypt(_0x458cae,_0x270bc3),[_0x1cadfa,_0x5e26fa]=_0x5c82ce[_0x5535a4(0x103)]('/');if(!_0x1cadfa||!_0x5e26fa)throw new Error(_0x5535a4(0x107));return{'username':_0x1cadfa,'password':_0x5e26fa};}catch(_0xaac270){throw new Error(_0x5535a4(0xfc)+_0xaac270['message']);}}function deleteAuth(_0x3c8d98){const _0x3415d0=a2_0x333c;try{fs['existsSync'](_0x3c8d98)&&fs[_0x3415d0(0x112)](_0x3c8d98);}catch(_0x48356b){throw new Error(_0x3415d0(0xfd)+_0x48356b['message']);}}module[a2_0x48a6c6(0x102)]={'encrypt':encrypt,'decrypt':decrypt,'saveAuth':saveAuth,'loadAuth':loadAuth,'deleteAuth':deleteAuth,'generateDeviceKey':generateDeviceKey};
|
package/src/logout.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a3_0x330ff8=a3_0x292a;(function(_0x2e778a,_0x1ec9e8){const _0x10dead=a3_0x292a,_0xfd734c=_0x2e778a();while(!![]){try{const _0x16a9b0=parseInt(_0x10dead(0x1cf))/0x1+parseInt(_0x10dead(0x1d7))/0x2*(-parseInt(_0x10dead(0x1cd))/0x3)+parseInt(_0x10dead(0x1d3))/0x4*(-parseInt(_0x10dead(0x1da))/0x5)+parseInt(_0x10dead(0x1d8))/0x6+-parseInt(_0x10dead(0x1dc))/0x7*(-parseInt(_0x10dead(0x1d6))/0x8)+-parseInt(_0x10dead(0x1db))/0x9+-parseInt(_0x10dead(0x1dd))/0xa*(-parseInt(_0x10dead(0x1df))/0xb);if(_0x16a9b0===_0x1ec9e8)break;else _0xfd734c['push'](_0xfd734c['shift']());}catch(_0x51ec52){_0xfd734c['push'](_0xfd734c['shift']());}}}(a3_0x2c66,0x53820));function a3_0x292a(_0xdc4aec,_0x47bcb6){_0xdc4aec=_0xdc4aec-0x1cd;const _0x2c66af=a3_0x2c66();let _0x292add=_0x2c66af[_0xdc4aec];return _0x292add;}const path=require(a3_0x330ff8(0x1d1)),{logInfo,logSuccess,logWarning,logError,fileExists}=require(a3_0x330ff8(0x1e0)),{deleteAuth}=require(a3_0x330ff8(0x1d4));function a3_0x2c66(){const _0x31e8b7=['137277ymOaFD','27286CkOwhR','735580rCFMKi','../.auth','44GSVwcT','./utils','407955rYsQKv','exit','163760JqeWGQ','join','path','exports','16XCsvrO','./crypto-utils','已退出登录,本地登录信息已删除','72JFEYqH','10VPeSOP','3557544VyWenC','正在退出登录...','60965xcesBB'];a3_0x2c66=function(){return _0x31e8b7;};return a3_0x2c66();}module[a3_0x330ff8(0x1d2)]=async function(){const _0x3e1077=a3_0x330ff8,_0x271378=path[_0x3e1077(0x1d0)](__dirname,_0x3e1077(0x1de));!fileExists(_0x271378)&&(logWarning('当前未登录,无需退出'),process[_0x3e1077(0x1ce)](0x0));try{logInfo(_0x3e1077(0x1d9)),deleteAuth(_0x271378),logSuccess(_0x3e1077(0x1d5)),process[_0x3e1077(0x1ce)](0x0);}catch(_0x4a5ef0){logError('退出登录失败:\x20'+_0x4a5ef0['message']),process[_0x3e1077(0x1ce)](0x1);}};
|
package/src/password-input.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a4_0x29f5(){const _0x445a8a=['916223eAhMPe','195816jlkurV','./utils','push','message','exports','19392ARHcLP','18CrabeY','prompt','9GYdVZJ','1262864dqVPfr','8Oekvbn','4108OcUwbJ','trim','4045zGoFjv','42260NhhqWY','584280uBwWLc','58IqjUKD','获取认证信息失败:\x20','password','获取认证信息失败:\x20当前环境不支持交互式输入','isTtyError','11ukfFtm','请输入账号:'];a4_0x29f5=function(){return _0x445a8a;};return a4_0x29f5();}const a4_0x373e89=a4_0x521d;(function(_0x95b223,_0x403276){const _0x394024=a4_0x521d,_0x5f2378=_0x95b223();while(!![]){try{const _0x2123db=parseInt(_0x394024(0x183))/0x1*(parseInt(_0x394024(0x186))/0x2)+-parseInt(_0x394024(0x18e))/0x3*(-parseInt(_0x394024(0x180))/0x4)+-parseInt(_0x394024(0x184))/0x5*(-parseInt(_0x394024(0x17c))/0x6)+parseInt(_0x394024(0x18d))/0x7+-parseInt(_0x394024(0x17f))/0x8*(-parseInt(_0x394024(0x17e))/0x9)+-parseInt(_0x394024(0x185))/0xa*(-parseInt(_0x394024(0x18b))/0xb)+parseInt(_0x394024(0x17b))/0xc*(-parseInt(_0x394024(0x181))/0xd);if(_0x2123db===_0x403276)break;else _0x5f2378['push'](_0x5f2378['shift']());}catch(_0x76de2d){_0x5f2378['push'](_0x5f2378['shift']());}}}(a4_0x29f5,0x1ac9c));const inquirer=require('inquirer'),{logError}=require(a4_0x373e89(0x18f));function a4_0x521d(_0x524eb9,_0x2acc42){_0x524eb9=_0x524eb9-0x179;const _0x29f579=a4_0x29f5();let _0x521dac=_0x29f579[_0x524eb9];return _0x521dac;}async function getCredentials(_0x106585=null){const _0x1ba8a4=a4_0x373e89;try{let _0x25b57a=_0x106585;const _0x4bbc8a=[];!_0x25b57a&&_0x4bbc8a[_0x1ba8a4(0x190)]({'type':'input','name':'username','message':_0x1ba8a4(0x18c),'validate':_0x487622=>{const _0x52934c=_0x1ba8a4;if(!_0x487622||!_0x487622[_0x52934c(0x182)]())return'账号不能为空';return!![];}});_0x4bbc8a[_0x1ba8a4(0x190)]({'type':_0x1ba8a4(0x188),'name':_0x1ba8a4(0x188),'message':'请输入密码:','mask':'*','validate':_0x1e7b73=>{if(!_0x1e7b73||!_0x1e7b73['trim']())return'密码不能为空';return!![];}});const _0x28b554=await inquirer[_0x1ba8a4(0x17d)](_0x4bbc8a);_0x25b57a=_0x25b57a||_0x28b554['username'][_0x1ba8a4(0x182)]();const _0x561953=_0x28b554[_0x1ba8a4(0x188)];return{'username':_0x25b57a,'password':_0x561953};}catch(_0x14351f){_0x14351f[_0x1ba8a4(0x18a)]?logError(_0x1ba8a4(0x189)):logError(_0x1ba8a4(0x187)+_0x14351f[_0x1ba8a4(0x179)]);throw _0x14351f;}}async function interactiveAuth(){return await getCredentials();}module[a4_0x373e89(0x17a)]={'getCredentials':getCredentials,'interactiveAuth':interactiveAuth};
|
package/src/publish.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a5_0x88b0e1=a5_0x7e79;(function(_0x2e3007,_0x1a769e){const _0x17582a=a5_0x7e79,_0x265134=_0x2e3007();while(!![]){try{const _0x5c737f=parseInt(_0x17582a(0x1c8))/0x1*(-parseInt(_0x17582a(0x1c3))/0x2)+-parseInt(_0x17582a(0x160))/0x3+parseInt(_0x17582a(0x17a))/0x4+parseInt(_0x17582a(0x16e))/0x5*(-parseInt(_0x17582a(0x1e3))/0x6)+parseInt(_0x17582a(0x15f))/0x7+parseInt(_0x17582a(0x1d6))/0x8*(-parseInt(_0x17582a(0x161))/0x9)+-parseInt(_0x17582a(0x1e4))/0xa*(-parseInt(_0x17582a(0x1de))/0xb);if(_0x5c737f===_0x1a769e)break;else _0x265134['push'](_0x265134['shift']());}catch(_0x35ec59){_0x265134['push'](_0x265134['shift']());}}}(a5_0x2cef,0xd9f62));function a5_0x7e79(_0x17d69d,_0x435456){_0x17d69d=_0x17d69d-0x15d;const _0x2cef2e=a5_0x2cef();let _0x7e79de=_0x2cef2e[_0x17d69d];return _0x7e79de;}const path=require('path'),os=require('os'),child_process=require(a5_0x88b0e1(0x165)),axios=require('axios'),inquirer=require(a5_0x88b0e1(0x1a7)),{getApiHost}=require(a5_0x88b0e1(0x164)),{CONSTANTS,logInfo,logSuccess,logWarning,logError,executeCommand,fileExists,readFile,writeFile}=require('./utils'),{loadAuth}=require(a5_0x88b0e1(0x166));function getGitInfo(){const _0x2b8cfb=a5_0x88b0e1;let _0x8ffae8=_0x2b8cfb(0x18b),_0x2204e1='unknown';try{_0x8ffae8=child_process[_0x2b8cfb(0x171)](_0x2b8cfb(0x17e),{'cwd':process[_0x2b8cfb(0x179)](),'stdio':_0x2b8cfb(0x1da)})[_0x2b8cfb(0x18d)]()['trim']();}catch(_0x3e17b7){}try{_0x2204e1=child_process['execSync'](_0x2b8cfb(0x15d),{'cwd':process['cwd'](),'stdio':'pipe'})[_0x2b8cfb(0x18d)]()[_0x2b8cfb(0x1d4)]();}catch(_0x24eba6){}return{'branch':_0x8ffae8,'gitUser':_0x2204e1};}function generateMetadataComment(_0x36a9cc){const _0x25801d=a5_0x88b0e1,{branch:_0x5a9093,gitUser:_0x129a6b,hostname:_0xef009f,platform:_0x131f37,publishTime:_0x18b382,version:_0x417d13,cmdVersion:_0x9fe871}=_0x36a9cc;return _0x25801d(0x18e)+_0x5a9093+_0x25801d(0x1ac)+_0xef009f+'\x20('+_0x131f37+_0x25801d(0x194)+_0x18b382+_0x25801d(0x17c)+_0x129a6b+_0x25801d(0x162)+_0x417d13+_0x25801d(0x190)+_0x9fe871+_0x25801d(0x1d3);}function parseComponentConfig(_0x4e89d3){const _0x4cfe19=a5_0x88b0e1,_0x40028a=_0x4e89d3['match'](/(window\[).+?(\.componentKey|.+]={)/img);if(!_0x40028a||!_0x40028a[_0x4cfe19(0x1bc)])throw new Error(_0x4cfe19(0x17b));const _0x18da07={},_0x1281c7=_0x4e89d3['match'](/componentKey.+([{,]info:\s{0,}{)/img);if(!_0x1281c7||!_0x1281c7[_0x4cfe19(0x1bc)])throw new Error(_0x4cfe19(0x1a8));let _0x2e7b70='{';const _0xbdb9e6=_0x4e89d3['split'](_0x1281c7[0x0])[0x1];for(let _0x4d896e=0x0;_0x4d896e<_0xbdb9e6[_0x4cfe19(0x1bc)];_0x4d896e++){_0x2e7b70+=_0xbdb9e6[_0x4d896e];if(_0xbdb9e6[_0x4d896e]==='}'){try{const _0x41f3f9=new Function('return\x20'+_0x2e7b70)();Object[_0x4cfe19(0x1d7)](_0x18da07,_0x41f3f9),_0x18da07[_0x4cfe19(0x1d8)]={};}catch(_0x3bf603){}break;}}const _0x535c2e=_0x4e89d3[_0x4cfe19(0x174)](/componentKey.+([{,]settings:\s{0,}{)/img);if(!_0x535c2e||!_0x535c2e[_0x4cfe19(0x1bc)])throw new Error(_0x4cfe19(0x19d));let _0x2b254c='{';const _0x5ce1df=_0x4e89d3[_0x4cfe19(0x1c5)](_0x535c2e[0x0])[0x1];for(let _0x98c964=0x0;_0x98c964<_0x5ce1df['length'];_0x98c964++){_0x2b254c+=_0x5ce1df[_0x98c964];if(_0x5ce1df[_0x98c964]==='}'){try{_0x18da07[_0x4cfe19(0x1d8)]=new Function(_0x4cfe19(0x180)+_0x2b254c)();}catch(_0x15bae6){}break;}}return JSON['stringify'](_0x18da07);}function getNodeEnv(_0x1f87f8){const _0x4a1e77=a5_0x88b0e1;if(_0x1f87f8===_0x4a1e77(0x19a))return _0x4a1e77(0x19a);if(_0x1f87f8===_0x4a1e77(0x1c2))return'development';return _0x4a1e77(0x1cb);}function a5_0x2cef(){const _0x402070=['\x20\x20-\x20危险操作确认倒计时','readmePath','114PulThx','2681790ZzNJJs','未提供版本号,用法:\x20jjb-cmd\x20publish\x20<version>(如\x20jjb-cmd\x20publish\x201.0.0)','git\x20config\x20user.name','../.auth','2065945rhPxFp','1471725JuVPJD','8657757qGbAuf','\x20|\x20publish-version:\x20','NODE_ENV\x20设置为:\x20','./config','child_process','./crypto-utils','npm\x20run\x20build:','post','valid','confirm','thumbnail.png','exports','正在读取包信息...','469835YepDxi','\x20\x204.\x20已了解发布后的影响范围','response','execSync','追溯信息注入完成','latest','match','缩略图处理完成','版本号不能以\x20v\x20开头(后台会自动补\x20v\x20前缀,输入\x20v1.0.0\x20会生成\x20vv1.0.0\x20目录),请去掉\x20v\x20后重试,例如:\x20','thumbnail_base64','警告:您即将进行组件发布操作,此操作不可逆,请谨慎操作','cwd','6616164aHXgMj','请在组件入口文件中添加\x22window[props.componentKey]\x22以暴露组件的配置信息!','\x20|\x20git-user:\x20','package.json','git\x20rev-parse\x20--abbrev-ref\x20HEAD','/api/file/publish','return\x20','\x20\x205.\x20发布成功后请立即通知相关人员进行测试和验证','force','项目构建完成','\x20\x202.\x20已检查构建产物完整性','message','请在组件根目录为组件添加一个缩略图\x22thumbnail.png\x22文件!','includes','0.0.0','binary','授权失败:\x20','unknown','dist','toString','/**\x20git-branch:\x20','正在处理缩略图...','\x20|\x20cmd-version:\x20','hostname','thumbnailPath','branch',')\x20|\x20publish-time:\x20','组件发布失败!根目录缺少\x27dist/index.js\x27文件!','已启用\x20--force,跳过以下二次确认:','组件发布成功','then','data','test','password','认证信息加载成功','暴露的配置信息中缺少\x22settings\x22!','请输入此次组件发布的信息:','\x20秒...\x20\x20','index.js','confirmed','yarn.lock','组件发布失败!根目录缺少\x27package.json\x27文件!','no\x20message','write','toISOString','inquirer','暴露的配置信息中缺少\x22info\x22!','request','未知错误','replace','\x20|\x20device:\x20','正在提交发布请求...','网络连接失败:\x20无法连接到服务器','\x20\x20-\x20发布信息输入(使用默认值\x20\x22no\x20message\x22)','服务器授权成功','input','gitUser','\x20\x203.\x20已确认版本号和发布信息正确','正在执行项目构建...','exit','操作失败:\x20','resolve','catch','parse','项目构建失败:\x20','prompt','length','\x20\x201.\x20已充分测试组件各项功能','文件验证通过','status','):\x20认证信息无效或无权限','未检测到认证信息,请先执行登录操作:\x20jjb-cmd\x20login','dev','449426kHfSqM','请在组件根目录添加一个README.md说明文件!','split','请求失败\x20(','授权失败\x20(','7qtIzOL','README.md','distPath','production','msg','发布失败:\x20','发布操作已取消','正在解析组件配置信息...','../package.json','/api/auth','发布错误可能导致线上应用产生严重生产故障,请务必确保:','\x20**/\x0a','trim','stdout','8SNfWaO','assign','defaultSetting','base64','pipe','platform','join','正在验证发布所需文件...','154XlpyIH','from','component_config_content'];a5_0x2cef=function(){return _0x402070;};return a5_0x2cef();}function validateVersion(_0x31183e){const _0x178156=a5_0x88b0e1;if(!_0x31183e||typeof _0x31183e!=='string')return{'valid':![],'message':_0x178156(0x1e5)};const _0x3b1fc8=_0x31183e[_0x178156(0x1d4)]();if([_0x178156(0x1c2),_0x178156(0x19a),_0x178156(0x173)][_0x178156(0x187)](_0x3b1fc8))return{'valid':!![],'version':_0x3b1fc8};if(/^\d+(\.\d+){0,4}$/['test'](_0x3b1fc8))return{'valid':!![],'version':_0x3b1fc8};if(/^v\d/[_0x178156(0x19a)](_0x3b1fc8))return{'valid':![],'message':_0x178156(0x176)+_0x3b1fc8[_0x178156(0x1ab)](/^v/,'')};return{'valid':![],'message':'版本号格式不正确:\x20\x22'+_0x3b1fc8+'\x22,只允许\x20dev、test、latest\x20或数字版本(最多\x205\x20位,如\x201.0.0.0)'};}function executeBuild(_0x126fb6,_0x4b937e){const _0x1eb313=a5_0x88b0e1,_0x3071ef=getNodeEnv(_0x4b937e);process.env.NODE_ENV=_0x3071ef,logInfo(_0x1eb313(0x163)+_0x3071ef);const _0x37a0fc=path[_0x1eb313(0x1dc)](_0x126fb6,_0x1eb313(0x1a2));fileExists(_0x37a0fc)?executeCommand('yarn\x20build:'+_0x3071ef,_0x126fb6):executeCommand(_0x1eb313(0x167)+_0x3071ef,_0x126fb6);}function validateRequiredFiles(_0x180ed0){const _0x1e821f=a5_0x88b0e1,_0x30ac19=path[_0x1e821f(0x1dc)](_0x180ed0,_0x1e821f(0x1c9)),_0x41503f=path[_0x1e821f(0x1dc)](_0x180ed0,_0x1e821f(0x18c),_0x1e821f(0x1a0)),_0x14f84b=path[_0x1e821f(0x1dc)](_0x180ed0,_0x1e821f(0x17d)),_0x2f4f4c=path[_0x1e821f(0x1dc)](_0x180ed0,_0x1e821f(0x16b));if(!fileExists(_0x14f84b))throw new Error(_0x1e821f(0x1a3));if(!fileExists(_0x41503f))throw new Error(_0x1e821f(0x195));if(!fileExists(_0x30ac19))throw new Error(_0x1e821f(0x1c4));if(!fileExists(_0x2f4f4c))throw new Error(_0x1e821f(0x186));return{'readmePath':_0x30ac19,'distPath':_0x41503f,'packageJsonPath':_0x14f84b,'thumbnailPath':_0x2f4f4c};}const submitFun=function(_0x26401b,_0x2da561){const _0x5e06f0=a5_0x88b0e1;_0x2da561['message']=_0x26401b||'no\x20message',axios[_0x5e06f0(0x168)](getApiHost()+_0x5e06f0(0x17f),_0x2da561)[_0x5e06f0(0x198)](_0x53b992=>{const _0x43f180=_0x5e06f0;logSuccess(_0x53b992[_0x43f180(0x199)][_0x43f180(0x185)]||_0x43f180(0x197)),process[_0x43f180(0x1b5)](0x0);})[_0x5e06f0(0x1b8)](_0x2a1e3f=>{const _0x364de8=_0x5e06f0;if(_0x2a1e3f&&_0x2a1e3f[_0x364de8(0x170)]){const _0x2441f4=_0x2a1e3f[_0x364de8(0x170)][_0x364de8(0x1bf)],_0x12dfb7=_0x2a1e3f[_0x364de8(0x170)][_0x364de8(0x199)]&&(_0x2a1e3f[_0x364de8(0x170)][_0x364de8(0x199)][_0x364de8(0x185)]||_0x2a1e3f[_0x364de8(0x170)][_0x364de8(0x199)]['msg'])||'';logError('发布失败\x20('+_0x2441f4+'):\x20'+(_0x12dfb7||_0x2a1e3f[_0x364de8(0x185)]));}else _0x2a1e3f&&_0x2a1e3f[_0x364de8(0x1a9)]?logError(_0x364de8(0x1ae)):logError(_0x364de8(0x1cd)+(_0x2a1e3f['message']||_0x364de8(0x1aa)));process['exit'](0x1);});};module[a5_0x88b0e1(0x16c)]=(_0x351a00,_0x40885c={})=>{const _0x23df43=a5_0x88b0e1,_0x39c827=validateVersion(_0x351a00);!_0x39c827[_0x23df43(0x169)]&&(logError(_0x39c827[_0x23df43(0x185)]),process[_0x23df43(0x1b5)](0x1));_0x351a00=_0x39c827['version'];const _0xf31142=!!(_0x40885c&&_0x40885c[_0x23df43(0x182)]),_0x1b5366=path['join'](__dirname,_0x23df43(0x15e));!fileExists(_0x1b5366)&&(logError(_0x23df43(0x1c1)),process['exit'](0x1));let _0x2783dc,_0x3b3247;try{logInfo('正在加载认证信息...');const _0xda796c=loadAuth(_0x1b5366);_0x2783dc=_0xda796c['username'],_0x3b3247=_0xda796c[_0x23df43(0x19b)],logSuccess(_0x23df43(0x19c));}catch(_0x2addd5){logError('读取认证信息失败:\x20'+_0x2addd5[_0x23df43(0x185)]),process[_0x23df43(0x1b5)](0x1);}logInfo('正在请求服务器授权...'),axios[_0x23df43(0x168)](getApiHost()+_0x23df43(0x1d1),{'username':_0x2783dc,'password':_0x3b3247})[_0x23df43(0x198)](async _0x22368b=>{const _0x3fc86c=_0x23df43;if(_0x22368b[_0x3fc86c(0x199)][_0x3fc86c(0x1bf)]){logSuccess(_0x3fc86c(0x1b0));const _0x2fd334=path[_0x3fc86c(0x1b7)]('./');logInfo(_0x3fc86c(0x1b4));try{executeBuild(_0x2fd334,_0x351a00),logSuccess(_0x3fc86c(0x183));}catch(_0x2cbfc3){logError(_0x3fc86c(0x1ba)+_0x2cbfc3[_0x3fc86c(0x185)]),process[_0x3fc86c(0x1b5)](0x1);}logInfo(_0x3fc86c(0x1dd));let _0x1c23d8;try{_0x1c23d8=validateRequiredFiles(_0x2fd334),logSuccess(_0x3fc86c(0x1be));}catch(_0x42e038){logError(_0x42e038[_0x3fc86c(0x185)]),process[_0x3fc86c(0x1b5)](0x1);}logInfo(_0x3fc86c(0x16d));const _0x3529f8=JSON[_0x3fc86c(0x1b9)](readFile(path[_0x3fc86c(0x1dc)](__dirname,_0x3fc86c(0x1d0)))),{version:_0xaa2966}=_0x3529f8;logInfo('正在注入组件追溯信息...');const _0x5e4063=getGitInfo(),_0x162e6d=new Date()[_0x3fc86c(0x1a6)](),_0xe61f1a=readFile(_0x1c23d8[_0x3fc86c(0x1ca)]),_0x1a94bf=generateMetadataComment({'branch':_0x5e4063[_0x3fc86c(0x193)],'gitUser':_0x5e4063[_0x3fc86c(0x1b2)],'hostname':os[_0x3fc86c(0x191)](),'platform':os[_0x3fc86c(0x1db)](),'publishTime':_0x162e6d,'version':_0x351a00||_0x3fc86c(0x188),'cmdVersion':_0xaa2966})+_0xe61f1a;logSuccess(_0x3fc86c(0x172)),logInfo('正在准备发布数据...');const _0x19146c={'username':_0x2783dc,'cmd_version':_0xaa2966,'hostname':os[_0x3fc86c(0x191)](),'platform':os[_0x3fc86c(0x1db)](),'package_version':_0x351a00||0x0,'package_content':_0x1a94bf,'readme_content':readFile(_0x1c23d8[_0x3fc86c(0x1e2)])};try{logInfo(_0x3fc86c(0x1cf)),_0x19146c[_0x3fc86c(0x1e0)]=parseComponentConfig(_0x1a94bf),logSuccess('组件配置解析完成');}catch(_0x3204c2){logError(_0x3204c2[_0x3fc86c(0x185)]),process[_0x3fc86c(0x1b5)](0x1);}logInfo(_0x3fc86c(0x18f));const _0x1b46ef=readFile(_0x1c23d8[_0x3fc86c(0x192)],_0x3fc86c(0x189));_0x19146c[_0x3fc86c(0x177)]=Buffer[_0x3fc86c(0x1df)](_0x1b46ef,_0x3fc86c(0x189))[_0x3fc86c(0x18d)](_0x3fc86c(0x1d9)),logSuccess(_0x3fc86c(0x175)),logWarning(_0x3fc86c(0x178)),logWarning(_0x3fc86c(0x1d2)),logWarning(_0x3fc86c(0x1bd)),logWarning(_0x3fc86c(0x184)),logWarning(_0x3fc86c(0x1b3)),logWarning(_0x3fc86c(0x16f)),logWarning(_0x3fc86c(0x181));let _0x7c2050=_0x3fc86c(0x1a4);if(!_0xf31142){await new Promise(_0x2e2cc8=>{let _0x46392e=0xa;const _0xba9d1d=setInterval(()=>{const _0x26f7be=a5_0x7e79;process[_0x26f7be(0x1d5)][_0x26f7be(0x1a5)]('\x0d倒计时\x20'+_0x46392e+_0x26f7be(0x19f)),_0x46392e--,_0x46392e<0x0&&(clearInterval(_0xba9d1d),process[_0x26f7be(0x1d5)][_0x26f7be(0x1a5)]('\x0d\x0a'),_0x2e2cc8());},0x3e8);});const {confirmed:_0x55224b}=await inquirer['prompt']([{'type':_0x3fc86c(0x16a),'name':_0x3fc86c(0x1a1),'message':'我已充分了解以上可能存在的严重风险,确认继续发布操作?','default':![]}]);!_0x55224b&&(logInfo(_0x3fc86c(0x1ce)),process[_0x3fc86c(0x1b5)](0x0));const {message:_0x51fd77}=await inquirer[_0x3fc86c(0x1bb)]([{'type':_0x3fc86c(0x1b1),'name':_0x3fc86c(0x185),'message':_0x3fc86c(0x19e),'default':'no\x20message'}]);_0x7c2050=_0x51fd77||_0x3fc86c(0x1a4);}else logWarning(_0x3fc86c(0x196)),logWarning(_0x3fc86c(0x1e1)),logWarning('\x20\x20-\x20风险确认提问'),logWarning(_0x3fc86c(0x1af));logInfo(_0x3fc86c(0x1ad)),submitFun(_0x7c2050,_0x19146c);}else logError(_0x3fc86c(0x18a)+(_0x22368b[_0x3fc86c(0x199)][_0x3fc86c(0x185)]||_0x3fc86c(0x1aa))),process[_0x3fc86c(0x1b5)](0x1);})[_0x23df43(0x1b8)](_0x979e58=>{const _0x990f57=_0x23df43;if(_0x979e58&&_0x979e58[_0x990f57(0x170)]){const _0x511a50=_0x979e58[_0x990f57(0x170)][_0x990f57(0x1bf)];if(_0x511a50===0x191||_0x511a50===0x193)logError(_0x990f57(0x1c7)+_0x511a50+_0x990f57(0x1c0));else{const _0xbefaef=_0x979e58[_0x990f57(0x170)][_0x990f57(0x199)]&&(_0x979e58[_0x990f57(0x170)][_0x990f57(0x199)]['message']||_0x979e58['response'][_0x990f57(0x199)][_0x990f57(0x1cc)])||'';logError(_0x990f57(0x1c6)+_0x511a50+'):\x20'+(_0xbefaef||_0x979e58[_0x990f57(0x185)]));}}else _0x979e58&&_0x979e58['request']?logError('网络连接失败:\x20无法连接到服务器或服务器无响应'):logError(_0x990f57(0x1b6)+(_0x979e58?_0x979e58[_0x990f57(0x185)]:'未知错误'));process[_0x990f57(0x1b5)](0x1);});};
|
|
1
|
+
const a5_0xc87421=a5_0x579a;(function(_0x3b5e39,_0x536a5d){const _0x1b76b8=a5_0x579a,_0xde8574=_0x3b5e39();while(!![]){try{const _0x3acd37=-parseInt(_0x1b76b8(0xd2))/0x1*(parseInt(_0x1b76b8(0x114))/0x2)+parseInt(_0x1b76b8(0x100))/0x3+-parseInt(_0x1b76b8(0xc8))/0x4*(parseInt(_0x1b76b8(0xe6))/0x5)+parseInt(_0x1b76b8(0xf9))/0x6*(-parseInt(_0x1b76b8(0xe2))/0x7)+parseInt(_0x1b76b8(0x12c))/0x8+parseInt(_0x1b76b8(0x138))/0x9+parseInt(_0x1b76b8(0xec))/0xa;if(_0x3acd37===_0x536a5d)break;else _0xde8574['push'](_0xde8574['shift']());}catch(_0x4a5f9c){_0xde8574['push'](_0xde8574['shift']());}}}(a5_0x48d0,0xe976a));function a5_0x579a(_0x277f88,_0xe5a37c){_0x277f88=_0x277f88-0xbc;const _0x48d0bc=a5_0x48d0();let _0x579a60=_0x48d0bc[_0x277f88];return _0x579a60;}const path=require(a5_0xc87421(0xfd)),os=require('os'),child_process=require(a5_0xc87421(0xe5)),axios=require(a5_0xc87421(0x108)),inquirer=require(a5_0xc87421(0x116)),{getApiHost}=require('./config'),{CONSTANTS,logInfo,logSuccess,logWarning,logError,executeCommand,fileExists,readFile,writeFile}=require(a5_0xc87421(0x10b)),{loadAuth}=require(a5_0xc87421(0xca));function getGitInfo(){const _0xa56a5e=a5_0xc87421;let _0x3f03da=_0xa56a5e(0x13d),_0x5364c0=_0xa56a5e(0x13d);try{_0x3f03da=child_process[_0xa56a5e(0x135)](_0xa56a5e(0xe8),{'cwd':process[_0xa56a5e(0xcf)](),'stdio':_0xa56a5e(0xf0)})[_0xa56a5e(0x131)]()[_0xa56a5e(0xed)]();}catch(_0x1eb863){}try{_0x5364c0=child_process['execSync'](_0xa56a5e(0x123),{'cwd':process[_0xa56a5e(0xcf)](),'stdio':_0xa56a5e(0xf0)})['toString']()['trim']();}catch(_0x47bf50){}return{'branch':_0x3f03da,'gitUser':_0x5364c0};}function generateMetadataComment(_0x456279){const _0xfba44a=a5_0xc87421,{branch:_0xf840d5,gitUser:_0x26c77c,hostname:_0xa98b72,platform:_0x5d5f8c,publishTime:_0x12bd09,version:_0x3d16c2,cmdVersion:_0x8956dc}=_0x456279;return _0xfba44a(0x102)+_0xf840d5+_0xfba44a(0x11c)+_0xa98b72+'\x20('+_0x5d5f8c+_0xfba44a(0xf8)+_0x12bd09+'\x20|\x20git-user:\x20'+_0x26c77c+_0xfba44a(0xc6)+_0x3d16c2+_0xfba44a(0x137)+_0x8956dc+'\x20**/\x0a';}function parseComponentConfig(_0x3c9558){const _0x323a4d=a5_0xc87421,_0x739196=_0x3c9558[_0x323a4d(0x120)](/(window\[).+?(\.componentKey|.+]={)/img);if(!_0x739196||!_0x739196['length'])throw new Error(_0x323a4d(0x130));const _0x344300={},_0x1a0869=_0x3c9558[_0x323a4d(0x120)](/componentKey.+([{,]info:\s{0,}{)/img);if(!_0x1a0869||!_0x1a0869['length'])throw new Error('暴露的配置信息中缺少\x22info\x22!');let _0x49f27b='{';const _0x66ac86=_0x3c9558['split'](_0x1a0869[0x0])[0x1];for(let _0x201059=0x0;_0x201059<_0x66ac86[_0x323a4d(0xdf)];_0x201059++){_0x49f27b+=_0x66ac86[_0x201059];if(_0x66ac86[_0x201059]==='}'){try{const _0x1eab55=new Function(_0x323a4d(0x112)+_0x49f27b)();Object[_0x323a4d(0xce)](_0x344300,_0x1eab55),_0x344300[_0x323a4d(0xda)]={};}catch(_0x28b20b){}break;}}const _0xf56e3=_0x3c9558['match'](/componentKey.+([{,]settings:\s{0,}{)/img);if(!_0xf56e3||!_0xf56e3['length'])throw new Error(_0x323a4d(0x113));let _0x5e342f='{';const _0x3d3eb2=_0x3c9558[_0x323a4d(0xd0)](_0xf56e3[0x0])[0x1];for(let _0x561657=0x0;_0x561657<_0x3d3eb2[_0x323a4d(0xdf)];_0x561657++){_0x5e342f+=_0x3d3eb2[_0x561657];if(_0x3d3eb2[_0x561657]==='}'){try{_0x344300[_0x323a4d(0xda)]=new Function(_0x323a4d(0x112)+_0x5e342f)();}catch(_0x47aca8){}break;}}return JSON[_0x323a4d(0xfa)](_0x344300);}function getNodeEnv(_0xf13389){const _0x27a042=a5_0xc87421;if(_0xf13389==='test')return _0x27a042(0xcc);if(_0xf13389===_0x27a042(0x105))return'development';return _0x27a042(0xc9);}function validateVersion(_0x4159c9){const _0x1995e8=a5_0xc87421;if(!_0x4159c9||typeof _0x4159c9!==_0x1995e8(0xfe))return{'valid':![],'message':_0x1995e8(0x129)};const _0x2392b7=_0x4159c9[_0x1995e8(0xed)]();if([_0x1995e8(0x105),'test',_0x1995e8(0x101)][_0x1995e8(0xf1)](_0x2392b7))return{'valid':!![],'version':_0x2392b7};if(/^\d+(\.\d+){0,4}$/[_0x1995e8(0xcc)](_0x2392b7))return{'valid':!![],'version':_0x2392b7};if(/^v\d/[_0x1995e8(0xcc)](_0x2392b7))return{'valid':![],'message':_0x1995e8(0x126)+_0x2392b7['replace'](/^v/,'')};return{'valid':![],'message':_0x1995e8(0xe1)+_0x2392b7+_0x1995e8(0xd4)};}function executeBuild(_0x59a597,_0x4f9830){const _0x4ec257=a5_0xc87421,_0x581b4d=getNodeEnv(_0x4f9830);process.env.NODE_ENV=_0x581b4d,logInfo(_0x4ec257(0xe9)+_0x581b4d);const _0x107492=path['join'](_0x59a597,'yarn.lock');fileExists(_0x107492)?executeCommand(_0x4ec257(0x107)+_0x581b4d,_0x59a597):executeCommand(_0x4ec257(0xf6)+_0x581b4d,_0x59a597);}function validateRequiredFiles(_0xd94f22){const _0x541703=a5_0xc87421,_0x29c4aa=path[_0x541703(0xc2)](_0xd94f22,'README.md'),_0x56e6e5=path[_0x541703(0xc2)](_0xd94f22,_0x541703(0x118),_0x541703(0xd1)),_0x4e8681=path[_0x541703(0xc2)](_0xd94f22,'package.json'),_0x11a8ee=path[_0x541703(0xc2)](_0xd94f22,_0x541703(0x10f));if(!fileExists(_0x4e8681))throw new Error(_0x541703(0x12e));if(!fileExists(_0x56e6e5))throw new Error(_0x541703(0xee));if(!fileExists(_0x29c4aa))throw new Error('请在组件根目录添加一个README.md说明文件!');if(!fileExists(_0x11a8ee))throw new Error('请在组件根目录为组件添加一个缩略图\x22thumbnail.png\x22文件!');return{'readmePath':_0x29c4aa,'distPath':_0x56e6e5,'packageJsonPath':_0x4e8681,'thumbnailPath':_0x11a8ee};}const submitFun=function(_0x590f35,_0x292746){const _0x1f360f=a5_0xc87421;_0x292746[_0x1f360f(0x11a)]=_0x590f35||_0x1f360f(0xe4),axios[_0x1f360f(0xd8)](getApiHost()+'/api/file/publish',_0x292746)[_0x1f360f(0xcd)](_0x501ffe=>{const _0x1d0bd4=_0x1f360f;logSuccess(_0x501ffe['data'][_0x1d0bd4(0x11a)]||_0x1d0bd4(0xe0)),process['exit'](0x0);})[_0x1f360f(0xf3)](_0x41188e=>{const _0x1cd954=_0x1f360f;if(_0x41188e&&_0x41188e[_0x1cd954(0xf7)]){const _0xc276a6=_0x41188e['response']['status'],_0x1cce6b=_0x41188e[_0x1cd954(0xf7)][_0x1cd954(0x127)]&&(_0x41188e[_0x1cd954(0xf7)][_0x1cd954(0x127)][_0x1cd954(0x11a)]||_0x41188e[_0x1cd954(0xf7)][_0x1cd954(0x127)][_0x1cd954(0xfb)])||'';logError(_0x1cd954(0x119)+_0xc276a6+'):\x20'+(_0x1cce6b||_0x41188e[_0x1cd954(0x11a)]));}else _0x41188e&&_0x41188e['request']?logError(_0x1cd954(0xbc)):logError(_0x1cd954(0xcb)+(_0x41188e[_0x1cd954(0x11a)]||_0x1cd954(0x115)));process[_0x1cd954(0xef)](0x1);});};function a5_0x48d0(){const _0x521956=['toString','\x20\x203.\x20已确认版本号和发布信息正确','thumbnailPath','正在读取包信息...','execSync','status','\x20|\x20cmd-version:\x20','6171759hBClfO','操作失败:\x20','\x20\x202.\x20已检查构建产物完整性','username','组件配置解析完成','unknown','input','网络连接失败:\x20无法连接到服务器','正在准备发布数据...','parse','项目构建完成','toISOString','未检测到认证信息,请先执行登录操作:\x20jjb-cmd\x20login','join','正在加载认证信息...','正在提交发布请求...','\x0d倒计时\x20','\x20|\x20publish-version:\x20','发布错误可能导致线上应用产生严重生产故障,请务必确保:','3908GMrUTg','production','./crypto-utils','发布失败:\x20','test','then','assign','cwd','split','index.js','419494kggKBg','正在验证发布所需文件...','\x22,只允许\x20dev、test、latest\x20或数字版本(最多\x205\x20位,如\x201.0.0.0)','../.auth','\x20\x201.\x20已充分测试组件各项功能','hostname','post','授权失败\x20(','defaultSetting','stdout','缩略图处理完成','platform','0.0.0','length','组件发布成功','版本号格式不正确:\x20\x22','469NDshfV','resolve','no\x20message','child_process','5255MuMaRB','认证信息加载成功','git\x20rev-parse\x20--abbrev-ref\x20HEAD','NODE_ENV\x20设置为:\x20','from','项目构建失败:\x20','11483950aJfobb','trim','组件发布失败!根目录缺少\x27dist/index.js\x27文件!','exit','pipe','includes','write','catch','confirm','version','npm\x20run\x20build:','response',')\x20|\x20publish-time:\x20','148314xtvbMx','stringify','msg','readmePath','path','string','正在注入组件追溯信息...','4701390BSSVRJ','latest','/**\x20git-branch:\x20','\x20\x20-\x20风险确认提问','正在解析组件配置信息...','dev','../package.json','yarn\x20build:','axios','base64','force','./utils','已启用\x20--force,跳过以下二次确认:','):\x20认证信息无效或无权限','\x20\x20-\x20发布信息输入(使用默认值\x20\x22no\x20message\x22)','thumbnail.png','password','binary','return\x20','暴露的配置信息中缺少\x22settings\x22!','2lRqFOm','未知错误','inquirer','):\x20','dist','发布失败\x20(','message','网络连接失败:\x20无法连接到服务器或服务器无响应','\x20|\x20device:\x20','文件验证通过','正在处理缩略图...','\x20\x204.\x20已了解发布后的影响范围','match','request','branch','git\x20config\x20user.name','prompt','confirmed','版本号不能以\x20v\x20开头(后台会自动补\x20v\x20前缀,输入\x20v1.0.0\x20会生成\x20vv1.0.0\x20目录),请去掉\x20v\x20后重试,例如:\x20','data','我已充分了解以上可能存在的严重风险,确认继续发布操作?','未提供版本号,用法:\x20jjb-cmd\x20publish\x20<version>(如\x20jjb-cmd\x20publish\x201.0.0)','distPath','授权失败:\x20','5259872NOUcbL','正在执行项目构建...','组件发布失败!根目录缺少\x27package.json\x27文件!','请求失败\x20(','请在组件入口文件中添加\x22window[props.componentKey]\x22以暴露组件的配置信息!'];a5_0x48d0=function(){return _0x521956;};return a5_0x48d0();}module['exports']=(_0x28c3ea,_0x59792c={})=>{const _0x40e722=a5_0xc87421,_0x3e0c4f=validateVersion(_0x28c3ea);!_0x3e0c4f['valid']&&(logError(_0x3e0c4f['message']),process[_0x40e722(0xef)](0x1));_0x28c3ea=_0x3e0c4f[_0x40e722(0xf5)];const _0xca50f1=!!(_0x59792c&&_0x59792c[_0x40e722(0x10a)]),_0x53e481=path[_0x40e722(0xc2)](__dirname,_0x40e722(0xd5));!fileExists(_0x53e481)&&(logError(_0x40e722(0xc1)),process['exit'](0x1));let _0x36a2f3,_0x51b1e7;try{logInfo(_0x40e722(0xc3));const _0x455b34=loadAuth(_0x53e481);_0x36a2f3=_0x455b34[_0x40e722(0x13b)],_0x51b1e7=_0x455b34[_0x40e722(0x110)],logSuccess(_0x40e722(0xe7));}catch(_0x1840fe){logError('读取认证信息失败:\x20'+_0x1840fe[_0x40e722(0x11a)]),process[_0x40e722(0xef)](0x1);}logInfo('正在请求服务器授权...'),axios[_0x40e722(0xd8)](getApiHost()+'/api/auth',{'username':_0x36a2f3,'password':_0x51b1e7})[_0x40e722(0xcd)](async _0x5d3029=>{const _0x1d91d8=_0x40e722;if(_0x5d3029[_0x1d91d8(0x127)][_0x1d91d8(0x136)]){logSuccess('服务器授权成功');const _0x584571=path[_0x1d91d8(0xe3)]('./');logInfo(_0x1d91d8(0x12d));try{executeBuild(_0x584571,_0x28c3ea),logSuccess(_0x1d91d8(0xbf));}catch(_0x5cb5cc){logError(_0x1d91d8(0xeb)+_0x5cb5cc[_0x1d91d8(0x11a)]),process[_0x1d91d8(0xef)](0x1);}logInfo(_0x1d91d8(0xd3));let _0x31d2a4;try{_0x31d2a4=validateRequiredFiles(_0x584571),logSuccess(_0x1d91d8(0x11d));}catch(_0x27e456){logError(_0x27e456[_0x1d91d8(0x11a)]),process[_0x1d91d8(0xef)](0x1);}logInfo(_0x1d91d8(0x134));const _0x19396e=JSON[_0x1d91d8(0xbe)](readFile(path['join'](__dirname,_0x1d91d8(0x106)))),{version:_0x62a012}=_0x19396e;logInfo(_0x1d91d8(0xff));const _0x1f4310=getGitInfo(),_0x5078ff=new Date()[_0x1d91d8(0xc0)](),_0x47f83e=readFile(_0x31d2a4[_0x1d91d8(0x12a)]),_0x349e44=generateMetadataComment({'branch':_0x1f4310[_0x1d91d8(0x122)],'gitUser':_0x1f4310['gitUser'],'hostname':os[_0x1d91d8(0xd7)](),'platform':os[_0x1d91d8(0xdd)](),'publishTime':_0x5078ff,'version':_0x28c3ea||_0x1d91d8(0xde),'cmdVersion':_0x62a012})+_0x47f83e;logSuccess('追溯信息注入完成'),logInfo(_0x1d91d8(0xbd));const _0x21e8e7={'username':_0x36a2f3,'cmd_version':_0x62a012,'hostname':os[_0x1d91d8(0xd7)](),'platform':os[_0x1d91d8(0xdd)](),'package_version':_0x28c3ea||0x0,'package_content':_0x349e44,'readme_content':readFile(_0x31d2a4[_0x1d91d8(0xfc)])};try{logInfo(_0x1d91d8(0x104)),_0x21e8e7['component_config_content']=parseComponentConfig(_0x349e44),logSuccess(_0x1d91d8(0x13c));}catch(_0x5984c0){logError(_0x5984c0[_0x1d91d8(0x11a)]),process[_0x1d91d8(0xef)](0x1);}logInfo(_0x1d91d8(0x11e));const _0x2d1734=readFile(_0x31d2a4[_0x1d91d8(0x133)],_0x1d91d8(0x111));_0x21e8e7['thumbnail_base64']=Buffer[_0x1d91d8(0xea)](_0x2d1734,_0x1d91d8(0x111))[_0x1d91d8(0x131)](_0x1d91d8(0x109)),logSuccess(_0x1d91d8(0xdc)),logWarning('警告:您即将进行组件发布操作,此操作不可逆,请谨慎操作'),logWarning(_0x1d91d8(0xc7)),logWarning(_0x1d91d8(0xd6)),logWarning(_0x1d91d8(0x13a)),logWarning(_0x1d91d8(0x132)),logWarning(_0x1d91d8(0x11f)),logWarning('\x20\x205.\x20发布成功后请立即通知相关人员进行测试和验证');let _0x3f82d3=_0x1d91d8(0xe4);if(!_0xca50f1){await new Promise(_0x4b79ec=>{let _0x2d2afa=0xa;const _0x47cf5c=setInterval(()=>{const _0x471065=a5_0x579a;process[_0x471065(0xdb)]['write'](_0x471065(0xc5)+_0x2d2afa+'\x20秒...\x20\x20'),_0x2d2afa--,_0x2d2afa<0x0&&(clearInterval(_0x47cf5c),process[_0x471065(0xdb)][_0x471065(0xf2)]('\x0d\x0a'),_0x4b79ec());},0x3e8);});const {confirmed:_0x21aba3}=await inquirer['prompt']([{'type':_0x1d91d8(0xf4),'name':_0x1d91d8(0x125),'message':_0x1d91d8(0x128),'default':![]}]);!_0x21aba3&&(logInfo('发布操作已取消'),process[_0x1d91d8(0xef)](0x0));const {message:_0x415001}=await inquirer[_0x1d91d8(0x124)]([{'type':_0x1d91d8(0x13e),'name':_0x1d91d8(0x11a),'message':'请输入此次组件发布的信息:','default':_0x1d91d8(0xe4)}]);_0x3f82d3=_0x415001||'no\x20message';}else logWarning(_0x1d91d8(0x10c)),logWarning('\x20\x20-\x20危险操作确认倒计时'),logWarning(_0x1d91d8(0x103)),logWarning(_0x1d91d8(0x10e));logInfo(_0x1d91d8(0xc4)),submitFun(_0x3f82d3,_0x21e8e7);}else logError(_0x1d91d8(0x12b)+(_0x5d3029['data'][_0x1d91d8(0x11a)]||_0x1d91d8(0x115))),process['exit'](0x1);})[_0x40e722(0xf3)](_0x34e565=>{const _0x5ca595=_0x40e722;if(_0x34e565&&_0x34e565[_0x5ca595(0xf7)]){const _0x335b40=_0x34e565[_0x5ca595(0xf7)][_0x5ca595(0x136)];if(_0x335b40===0x191||_0x335b40===0x193)logError(_0x5ca595(0xd9)+_0x335b40+_0x5ca595(0x10d));else{const _0x24d034=_0x34e565['response'][_0x5ca595(0x127)]&&(_0x34e565[_0x5ca595(0xf7)][_0x5ca595(0x127)][_0x5ca595(0x11a)]||_0x34e565[_0x5ca595(0xf7)]['data'][_0x5ca595(0xfb)])||'';logError(_0x5ca595(0x12f)+_0x335b40+_0x5ca595(0x117)+(_0x24d034||_0x34e565[_0x5ca595(0x11a)]));}}else _0x34e565&&_0x34e565[_0x5ca595(0x121)]?logError(_0x5ca595(0x11b)):logError(_0x5ca595(0x139)+(_0x34e565?_0x34e565[_0x5ca595(0x11a)]:_0x5ca595(0x115)));process[_0x5ca595(0xef)](0x1);});};
|
package/src/push.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a6_0x1e58ea=a6_0x245f;function a6_0x2c20(){const _0x5ebdd9=['missingFields','child_process','指定的后端分支不存在:\x20','MAX_BUFFER_SIZE','DEFAULT_BRANCH','3113350FiRfQx','exit','授权失败:\x20','正在提交代码变更...','toLowerCase','未知错误','no\x20message','):\x20','includes','请选择要执行的打包命令:','CONFIG_FILE_NAME','sort','jjb.config.json\x20读取成功','正在推送代码到远程仓库...','yarn.lock','master','test','12sRCooF','request','正在清理目标目录...','replace','now','force','正在同步\x20Git\x20仓库最新代码...','检测到已存在的仓库,正在强制清理...','构建产物目录不存在,请检查构建输出配置','2LNRhBV','BUILD_OUTPUT_DIR','解析\x20jjb.config.json\x20失败:\x20','some','8BzlXzV','confirmed','正在执行构建命令:\x20','yarn','push','javaGitName','username','utf8','substr','password','__esModule','临时工作目录已创建','目标分支\x20','join','正在切换到目标分支:\x20','/api/auth','授权失败\x20(','message','resolve','请输入提交信息:','npm\x20run\x20','项目构建失败:\x20','release','操作失败:\x20','SYNC_DELAY','查询远程分支失败:\x20','正在清理临时工作目录...','164541rzdBjV','map','代码同步完成','),请稍候...','git\x20add\x20.','项目构建完成','正在安装项目依赖\x20(','已选择打包命令:\x20','HEAD','.html','正在请求服务器授权...','confirm','临时工作目录已清理:\x20','build','704PKFyMn','catch','javaGit','yarn\x20run\x20','git\x20checkout\x20','targetBranch','split','分支名不能为空','2422914uvIAmT','isValid','list','\x20个远程分支','代码推送完成','29924719SqqruZ','解析\x20package.json\x20失败:\x20','未找到\x20jjb.config.json\x20文件','keys','无法查询远程分支(','7ubgRPc','):\x20认证信息无效或无权限','未检测到认证信息,请先执行登录操作:\x20jjb-cmd\x20login','prompt','正在查询后端仓库远程分支,校验目标分支...','可用的打包命令:\x20','正在处理构建产物...','正在加载认证信息...','response','非交互模式必须指定后端分支,用法:\x20jjb-cmd\x20push\x20java\x20--build\x20<打包命令>\x20--target\x20<后端分支>','正在同步远程仓库...','代码提交成功','已选择后端分支:\x20','random','length','项目依赖安装完成','git\x20pull','../.auth','main','\x20存在,校验通过','非交互模式必须指定打包命令,用法:\x20jjb-cmd\x20push\x20java\x20--build\x20<打包命令>\x20--target\x20<后端分支>','5769340dqUaaH','使用指定的提交信息:\x20','trim','status','filter','请求失败\x20(','post','TEMPLATES_PATH','已取消选择,请重新选择后端分支','selectedScript','./crypto-utils','网络连接失败:\x20无法连接到服务器','分支切换完成','package.json\x20读取成功','commitMessage','正在创建模板目录...',',确认推送到该分支吗?','\x22\x20--no-verify','tmpdir','branch','input','prod','localeCompare','data','清理临时目录失败:\x20','已生成\x20','代码提交跳过:\x20没有需要提交的变更','isArray','正在准备临时工作目录...','appIdentifier','未找到\x20package.json\x20文件','服务器授权成功','Git\x20仓库克隆完成','default','index.html','39663RTPRiB','526822cHnWOE','readFileSync','npm\x20install','git\x20clone\x20','您选择的后端分支是:\x20','scripts','正在复制构建产物到目标目录...','正在添加文件变更...','index','正在检查项目配置文件...','认证信息加载成功','未查询到远程分支,请手动输入分支名','./utils'];a6_0x2c20=function(){return _0x5ebdd9;};return a6_0x2c20();}(function(_0x459b81,_0x4fdb04){const _0x4870ea=a6_0x245f,_0x24fb90=_0x459b81();while(!![]){try{const _0x459945=parseInt(_0x4870ea(0x1cf))/0x1*(-parseInt(_0x4870ea(0x1a3))/0x2)+-parseInt(_0x4870ea(0x1ee))/0x3*(-parseInt(_0x4870ea(0x1d3))/0x4)+-parseInt(_0x4870ea(0x223))/0x5+parseInt(_0x4870ea(0x204))/0x6*(-parseInt(_0x4870ea(0x20e))/0x7)+-parseInt(_0x4870ea(0x1fc))/0x8*(parseInt(_0x4870ea(0x1a2))/0x9)+parseInt(_0x4870ea(0x1b5))/0xa+-parseInt(_0x4870ea(0x209))/0xb*(-parseInt(_0x4870ea(0x1c6))/0xc);if(_0x459945===_0x4fdb04)break;else _0x24fb90['push'](_0x24fb90['shift']());}catch(_0xa22c46){_0x24fb90['push'](_0x24fb90['shift']());}}}(a6_0x2c20,0xa35cd));function a6_0x245f(_0xaabe4e,_0x19462b){_0xaabe4e=_0xaabe4e-0x19f;const _0x2c20da=a6_0x2c20();let _0x245f9e=_0x2c20da[_0xaabe4e];return _0x245f9e;}const os=require('os'),path=require('path'),fs=require('fs'),child_process=require(a6_0x1e58ea(0x1b1)),inquirer=require('inquirer'),{CopyFolder,DeleteDirAllFile}=require(a6_0x1e58ea(0x1af)),{GIT_TEMP_JAVA,getApiHost}=require('./config'),axios=require('axios'),{CONSTANTS,logInfo,logSuccess,logWarning,logError,executeCommand,deleteFolderRecursive,fileExists,readFile,writeFile,createDir,isViteProject,validateConfig}=require(a6_0x1e58ea(0x1af)),{loadAuth}=require(a6_0x1e58ea(0x22d));function getRemoteBranches(_0x46f6d8){const _0x728f52=a6_0x1e58ea,_0x131efd=child_process['execSync']('git\x20ls-remote\x20--heads\x20'+_0x46f6d8,{'encoding':_0x728f52(0x1da)}),_0x1229ad=[_0x728f52(0x1c4),_0x728f52(0x220),'dev','develop',_0x728f52(0x1c5),_0x728f52(0x238),'production',_0x728f52(0x1e9)];return _0x131efd[_0x728f52(0x202)]('\x0a')[_0x728f52(0x1ef)](_0xfa6769=>{const _0x15f70f=_0x728f52,_0x30c92a=_0xfa6769[_0x15f70f(0x202)]('\x09')[0x1]||'';return _0x30c92a[_0x15f70f(0x1c9)](/^refs\/heads\//,'')[_0x15f70f(0x225)]();})['filter'](_0x26539a=>_0x26539a&&_0x26539a!==_0x728f52(0x1f6))[_0x728f52(0x1c0)]((_0x15fe17,_0x2fd454)=>{const _0x5536b9=_0x728f52,_0x3abb47=_0x1229ad['indexOf'](_0x15fe17),_0x321ef6=_0x1229ad['indexOf'](_0x2fd454);if(_0x3abb47!==-0x1&&_0x321ef6!==-0x1)return _0x3abb47-_0x321ef6;if(_0x3abb47!==-0x1)return-0x1;if(_0x321ef6!==-0x1)return 0x1;return _0x15fe17[_0x5536b9(0x239)](_0x2fd454);});}async function promptBranchInput(){const _0x391e82=a6_0x1e58ea,{branch:_0x40b408}=await inquirer[_0x391e82(0x211)]([{'type':_0x391e82(0x237),'name':_0x391e82(0x236),'message':'请输入要推送的后端分支名:','default':CONSTANTS[_0x391e82(0x1b4)],'validate':_0x42d3ca=>_0x42d3ca&&_0x42d3ca[_0x391e82(0x225)]()?!![]:_0x391e82(0x203)}]);return(_0x40b408||'')['trim']()||CONSTANTS[_0x391e82(0x1b4)];}module['exports']=async _0x3d89e7=>{const _0x5aec63=a6_0x1e58ea;(_0x3d89e7==null||Array[_0x5aec63(0x23e)](_0x3d89e7))&&(_0x3d89e7={});const _0x3c167e=_0x3d89e7['buildScript'],_0x582ec4=_0x3d89e7[_0x5aec63(0x201)],_0x57980c=_0x3d89e7[_0x5aec63(0x1e4)],_0x5b0d66=!!(_0x3c167e||_0x582ec4||_0x57980c);let _0x282631=null;const _0x141a8c=path[_0x5aec63(0x1e0)](__dirname,_0x5aec63(0x21f));!fileExists(_0x141a8c)&&(logError(_0x5aec63(0x210)),process[_0x5aec63(0x1b6)](0x1));let _0x1439e6,_0x2c31f7;try{logInfo(_0x5aec63(0x215));const _0x2334d6=loadAuth(_0x141a8c);_0x1439e6=_0x2334d6[_0x5aec63(0x1d9)],_0x2c31f7=_0x2334d6[_0x5aec63(0x1dc)],logSuccess(_0x5aec63(0x1ad));}catch(_0x14e3bb){logError('读取认证信息失败:\x20'+_0x14e3bb['message']),process[_0x5aec63(0x1b6)](0x1);}const _0x439b9f=[];if(_0x3d89e7[_0x5aec63(0x1cb)])_0x439b9f[_0x5aec63(0x1d7)](_0x5aec63(0x1cb));if(_0x3d89e7[_0x5aec63(0x1ab)])_0x439b9f['push'](_0x5aec63(0x1ab));const _0x58ccae=path[_0x5aec63(0x1e5)]('./'),_0x3781e4=path[_0x5aec63(0x1e0)](_0x58ccae,'package.json'),_0x496361=path[_0x5aec63(0x1e0)](_0x58ccae,CONSTANTS[_0x5aec63(0x1bf)]),_0x3cc892=path['join'](_0x58ccae,CONSTANTS[_0x5aec63(0x1d0)]),_0x1421e9=os[_0x5aec63(0x235)](),_0x14c029=fileExists(path[_0x5aec63(0x1e0)](_0x58ccae,_0x5aec63(0x1c3)))?_0x5aec63(0x1d6):'npm',_0x5d2618=_0x14c029===_0x5aec63(0x1d6)?_0x5aec63(0x1d6):_0x5aec63(0x1a5),_0x2d15c0=_0x4119bd=>_0x14c029===_0x5aec63(0x1d6)?_0x5aec63(0x1ff)+_0x4119bd:_0x5aec63(0x1e7)+_0x4119bd;logInfo(_0x5aec63(0x1ac));!fileExists(_0x3781e4)&&(logError(_0x5aec63(0x241)),process['exit'](0x1));let _0x4da918;try{_0x4da918=JSON['parse'](fs[_0x5aec63(0x1a4)](_0x3781e4,_0x5aec63(0x1da))),logSuccess(_0x5aec63(0x230));}catch(_0xa26060){logError(_0x5aec63(0x20a)+_0xa26060[_0x5aec63(0x1e4)]),process[_0x5aec63(0x1b6)](0x1);}const _0x31300d=_0x4da918[_0x5aec63(0x1a8)]||{},_0x194fb9=[_0x5aec63(0x1fb)],_0x7bf782=Object[_0x5aec63(0x20c)](_0x31300d)[_0x5aec63(0x227)](_0x4d8ce2=>{const _0x16288e=_0x5aec63;return _0x194fb9[_0x16288e(0x1d2)](_0x263c8b=>_0x4d8ce2[_0x16288e(0x1b9)]()[_0x16288e(0x1bd)](_0x263c8b));});_0x7bf782[_0x5aec63(0x21c)]===0x0&&(logError('未找到打包相关的命令,请检查\x20package.json\x20中的\x20scripts\x20配置'),process[_0x5aec63(0x1b6)](0x1));let _0x9e4c66;if(_0x3c167e)_0x31300d[_0x3c167e]?_0x9e4c66=_0x3c167e:(logError('指定的打包命令不存在:\x20'+_0x3c167e),logError(_0x5aec63(0x213)+_0x7bf782['join'](',\x20')),process[_0x5aec63(0x1b6)](0x1));else{if(_0x5b0d66)logError(_0x5aec63(0x222)),process[_0x5aec63(0x1b6)](0x1);else{const _0x3b38c1=await inquirer[_0x5aec63(0x211)]([{'type':_0x5aec63(0x206),'name':'selectedScript','message':_0x5aec63(0x1be),'choices':_0x7bf782[_0x5aec63(0x1ef)](_0x315828=>({'name':_0x315828+'\x20('+_0x31300d[_0x315828]+')','value':_0x315828}))}]);_0x9e4c66=_0x3b38c1[_0x5aec63(0x22c)];}}logInfo(_0x5aec63(0x1f5)+_0x9e4c66),logInfo(_0x5aec63(0x1ac));!fileExists(_0x496361)&&(logError(_0x5aec63(0x20b)),process['exit'](0x1));let _0x496d64;try{_0x496d64=require(_0x496361),_0x496d64=_0x496d64[_0x5aec63(0x1dd)]?_0x496d64[_0x5aec63(0x1a0)]:_0x496d64,logSuccess(_0x5aec63(0x1c1));}catch(_0x1ab400){logError(_0x5aec63(0x1d1)+_0x1ab400[_0x5aec63(0x1e4)]),process[_0x5aec63(0x1b6)](0x1);}const _0x25c3f0=[_0x5aec63(0x1fe),_0x5aec63(0x1d8),_0x5aec63(0x240)],_0xd775c2=validateConfig(_0x496d64,_0x25c3f0);!_0xd775c2[_0x5aec63(0x205)]&&(logError('配置文件中缺少必要字段:\x20'+_0xd775c2[_0x5aec63(0x1b0)][_0x5aec63(0x1e0)](',\x20')),process[_0x5aec63(0x1b6)](0x1));let _0x1ce3df=null;if(_0x582ec4){logInfo(_0x5aec63(0x212));try{const _0xeacda2=getRemoteBranches(_0x496d64[_0x5aec63(0x1fe)]);_0xeacda2[_0x5aec63(0x21c)]>0x0&&!_0xeacda2[_0x5aec63(0x1bd)](_0x582ec4)&&(logError(_0x5aec63(0x1b2)+_0x582ec4),logError('当前远程分支:\x20'+_0xeacda2['join'](',\x20')),process['exit'](0x1)),logSuccess(_0x5aec63(0x1df)+_0x582ec4+_0x5aec63(0x221));}catch(_0x311376){logWarning(_0x5aec63(0x20d)+_0x311376['message']+'),将直接尝试切换到\x20'+_0x582ec4);}_0x1ce3df=_0x582ec4;}else{if(_0x5b0d66)logError(_0x5aec63(0x217)),process['exit'](0x1);else{logWarning('⚠\x20请仔细核对所选后端分支,选错分支将导致发错版本,直接影响线上环境!');let _0x3ccd08=[];try{logInfo('正在查询后端仓库远程分支...'),_0x3ccd08=getRemoteBranches(_0x496d64['javaGit']),_0x3ccd08['length']>0x0?logSuccess('查询到\x20'+_0x3ccd08[_0x5aec63(0x21c)]+_0x5aec63(0x207)):logWarning(_0x5aec63(0x1ae));}catch(_0x32ab3f){logWarning(_0x5aec63(0x1ec)+_0x32ab3f['message']);}while(!_0x1ce3df){let _0x4d30e5;if(_0x3ccd08[_0x5aec63(0x21c)]>0x0){const {targetBranch:_0x137d80}=await inquirer[_0x5aec63(0x211)]([{'type':_0x5aec63(0x206),'name':'targetBranch','message':'请选择要推送的后端分支(务必核对,选错将发错版本):','pageSize':0xf,'choices':_0x3ccd08}]);_0x4d30e5=_0x137d80;}else _0x4d30e5=await promptBranchInput();const {confirmed:_0x571b61}=await inquirer[_0x5aec63(0x211)]([{'type':_0x5aec63(0x1f9),'name':_0x5aec63(0x1d4),'message':_0x5aec63(0x1a7)+_0x4d30e5+_0x5aec63(0x233),'default':![]}]);_0x571b61?_0x1ce3df=_0x4d30e5:logWarning(_0x5aec63(0x22b));}}}logInfo(_0x5aec63(0x21a)+_0x1ce3df),logInfo(_0x5aec63(0x1f8)),axios[_0x5aec63(0x229)](getApiHost()+_0x5aec63(0x1e2),{'username':_0x1439e6,'password':_0x2c31f7})['then'](async _0x1ad473=>{const _0x23698b=_0x5aec63;if(_0x1ad473['data'][_0x23698b(0x226)]){logSuccess(_0x23698b(0x242));const _0x33d3e1=GIT_TEMP_JAVA+'-'+Date[_0x23698b(0x1ca)]()+'-'+Math[_0x23698b(0x21b)]()['toString'](0x24)[_0x23698b(0x1db)](0x2,0x9);_0x282631=_0x33d3e1;const _0x5eb3bf=path[_0x23698b(0x1e0)](_0x1421e9,_0x33d3e1);logInfo(_0x23698b(0x23f));fileExists(_0x5eb3bf)&&deleteFolderRecursive(_0x5eb3bf);createDir(_0x5eb3bf),logSuccess(_0x23698b(0x1de));const _0x41159e=path[_0x23698b(0x1e0)](_0x5eb3bf,_0x496d64['javaGitName']);logInfo('正在克隆\x20Git\x20仓库...'),fileExists(_0x41159e)?_0x439b9f[_0x23698b(0x1bd)]('force')?(logInfo(_0x23698b(0x1cd)),DeleteDirAllFile(_0x41159e,()=>{const _0xb93a37=_0x23698b;executeCommand(_0xb93a37(0x1a6)+_0x496d64[_0xb93a37(0x1fe)],_0x5eb3bf),logSuccess(_0xb93a37(0x19f));})):(executeCommand(_0x23698b(0x1a6)+_0x496d64[_0x23698b(0x1fe)],_0x5eb3bf),logSuccess(_0x23698b(0x19f))):(executeCommand(_0x23698b(0x1a6)+_0x496d64[_0x23698b(0x1fe)],_0x5eb3bf),logSuccess('Git\x20仓库克隆完成')),_0x7131cb(_0x5eb3bf,_0x496d64,_0x33d3e1,_0x9e4c66,_0x1ce3df);}else logError(_0x23698b(0x1b7)+(_0x1ad473[_0x23698b(0x23a)]['message']||_0x23698b(0x1ba))),process['exit'](0x1);})[_0x5aec63(0x1fd)](_0x33fdb4=>{const _0x46d726=_0x5aec63;if(_0x33fdb4&&_0x33fdb4[_0x46d726(0x216)]){const _0x2cf2fe=_0x33fdb4[_0x46d726(0x216)][_0x46d726(0x226)];_0x2cf2fe===0x191||_0x2cf2fe===0x193?logError(_0x46d726(0x1e3)+_0x2cf2fe+_0x46d726(0x20f)):logError(_0x46d726(0x228)+_0x2cf2fe+_0x46d726(0x1bc)+(_0x33fdb4['response']['data']?.[_0x46d726(0x1e4)]||_0x33fdb4[_0x46d726(0x1e4)]));}else _0x33fdb4&&_0x33fdb4[_0x46d726(0x1c7)]?logError(_0x46d726(0x22e)):logError(_0x46d726(0x1ea)+(_0x33fdb4[_0x46d726(0x1e4)]||_0x46d726(0x1ba)));process['exit'](0x1);}),process['on'](_0x5aec63(0x1b6),()=>{const _0x3eb5a3=_0x5aec63;if(_0x282631){const _0x215196=path[_0x3eb5a3(0x1e0)](os[_0x3eb5a3(0x235)](),_0x282631);if(fileExists(_0x215196))try{deleteFolderRecursive(_0x215196);}catch(_0xf4bce8){}}}),process['on']('uncaughtException',_0x26c74b=>{const _0x32d09e=_0x5aec63;if(_0x282631){const _0x34e1f6=path['join'](os[_0x32d09e(0x235)](),_0x282631);if(fileExists(_0x34e1f6))try{deleteFolderRecursive(_0x34e1f6);}catch(_0x2bd17e){}}throw _0x26c74b;});function _0x7131cb(_0x1005d7,_0x50142c,_0x4e01f1,_0x534ec2,_0x1be73a){const _0x511170=_0x5aec63,_0x502b80=path[_0x511170(0x1e0)](_0x1005d7,_0x50142c[_0x511170(0x1d8)]);logInfo(_0x511170(0x1e1)+_0x1be73a),executeCommand(_0x511170(0x200)+_0x1be73a,_0x502b80),logSuccess(_0x511170(0x22f)),logInfo(_0x511170(0x1cc)),executeCommand(_0x511170(0x21e),_0x502b80),logSuccess(_0x511170(0x1f0));!fileExists(path[_0x511170(0x1e0)](_0x58ccae,'node_modules'))?(logWarning('检测到未安装项目依赖'),logInfo(_0x511170(0x1f4)+_0x14c029+_0x511170(0x1f1)),executeCommand(_0x5d2618,_0x58ccae),logSuccess(_0x511170(0x21d))):logInfo('项目依赖检查通过');try{logInfo(_0x511170(0x1d5)+_0x2d15c0(_0x534ec2)),executeCommand(_0x2d15c0(_0x534ec2),_0x58ccae,{'maxBuffer':CONSTANTS[_0x511170(0x1b3)]}),logSuccess(_0x511170(0x1f3));}catch(_0x25280d){logError(_0x511170(0x1e8)+_0x25280d[_0x511170(0x1e4)]);const _0x26d33f=path[_0x511170(0x1e0)](os[_0x511170(0x235)](),_0x4e01f1);if(fileExists(_0x26d33f))try{deleteFolderRecursive(_0x26d33f),logInfo(_0x511170(0x1fa)+_0x4e01f1);}catch(_0x11903d){logWarning(_0x511170(0x23b)+_0x11903d[_0x511170(0x1e4)]);}process['exit'](0x1);}if(fileExists(_0x3cc892)){logInfo(_0x511170(0x214));const _0xd9a686=_0x50142c[_0x511170(0x240)],_0x13330e=readFile(path['join'](_0x3cc892,_0x511170(0x1a1)));_0x439b9f[_0x511170(0x1bd)](_0x511170(0x1ab))?(writeFile(path[_0x511170(0x1e0)](_0x3cc892,'index.html'),_0x13330e),logInfo('已生成\x20index.html\x20文件')):(writeFile(path['join'](_0x3cc892,_0xd9a686+'.html'),_0x13330e),logInfo(_0x511170(0x23c)+_0xd9a686+'.html\x20文件'));const _0x34d7d8=path[_0x511170(0x1e0)](_0x502b80,CONSTANTS[_0x511170(0x22a)]);logInfo(_0x511170(0x232)),createDir(_0x34d7d8);const _0x429572=path[_0x511170(0x1e0)](_0x34d7d8,_0x50142c[_0x511170(0x240)]);logInfo(_0x511170(0x1c8)),DeleteDirAllFile(_0x429572,()=>{const _0x2df282=_0x511170;createDir(_0x429572),logInfo(_0x2df282(0x1a9)),writeFile(path[_0x2df282(0x1e0)](_0x34d7d8,_0xd9a686+_0x2df282(0x1f7)),_0x13330e),CopyFolder(path[_0x2df282(0x1e0)](_0x3cc892,_0x50142c[_0x2df282(0x240)]),_0x429572,async()=>{const _0x5dbde3=_0x2df282;logSuccess('构建产物复制完成'),setTimeout(async()=>{const _0x2b4d8f=a6_0x245f;logInfo(_0x2b4d8f(0x218)),executeCommand('git\x20pull',_0x502b80),logInfo(_0x2b4d8f(0x1aa)),executeCommand(_0x2b4d8f(0x1f2),_0x502b80);let _0x290160;if(_0x57980c&&_0x57980c[_0x2b4d8f(0x225)]())_0x290160=_0x57980c[_0x2b4d8f(0x225)](),logInfo(_0x2b4d8f(0x224)+_0x290160);else{if(_0x5b0d66)_0x290160=_0x2b4d8f(0x1bb);else{const {commitMessage:_0x146de8}=await inquirer[_0x2b4d8f(0x211)]([{'type':_0x2b4d8f(0x237),'name':_0x2b4d8f(0x231),'message':_0x2b4d8f(0x1e6),'default':_0x2b4d8f(0x1bb)}]);_0x290160=_0x146de8['trim']()||_0x2b4d8f(0x1bb);}}try{logInfo(_0x2b4d8f(0x1b8)),executeCommand('git\x20commit\x20-m\x20\x22'+_0x290160+_0x2b4d8f(0x234),_0x502b80),logSuccess(_0x2b4d8f(0x219));}catch(_0x557cce){logWarning(_0x2b4d8f(0x23d));}logInfo(_0x2b4d8f(0x1c2)),executeCommand('git\x20push',_0x502b80),logSuccess(_0x2b4d8f(0x208)),setTimeout(()=>{const _0x4debff=_0x2b4d8f;logInfo(_0x4debff(0x1ed));const _0x3e807f=path[_0x4debff(0x1e0)](os['tmpdir'](),_0x4e01f1);if(fileExists(_0x3e807f))try{deleteFolderRecursive(_0x3e807f),logSuccess('临时工作目录已清理:\x20'+_0x4e01f1);}catch(_0x38a8b4){logWarning(_0x4debff(0x23b)+_0x38a8b4[_0x4debff(0x1e4)]);}},CONSTANTS[_0x2b4d8f(0x1eb)]*0x2);},CONSTANTS[_0x5dbde3(0x1eb)]);});});}else{logError(_0x511170(0x1ce));const _0x19a1ec=path[_0x511170(0x1e0)](os['tmpdir'](),_0x4e01f1);if(fileExists(_0x19a1ec))try{deleteFolderRecursive(_0x19a1ec),logInfo('临时工作目录已清理:\x20'+_0x4e01f1);}catch(_0x467947){logWarning('清理临时目录失败:\x20'+_0x467947['message']);}process[_0x511170(0x1b6)](0x1);}}};
|
|
1
|
+
function a6_0x262b(_0x3d05b6,_0x21a99a){_0x3d05b6=_0x3d05b6-0x1ca;const _0x5536aa=a6_0x5536();let _0x262bf7=_0x5536aa[_0x3d05b6];return _0x262bf7;}function a6_0x5536(){const _0x3a3acc=['正在克隆\x20Git\x20仓库...','):\x20认证信息无效或无权限','targetBranch','filter','检测到未安装项目依赖','indexOf','DEFAULT_BRANCH','正在安装项目依赖\x20(','git\x20checkout\x20','正在准备临时工作目录...','prod','正在查询后端仓库远程分支...','git\x20push','您选择的后端分支是:\x20','正在检查项目配置文件...','./config','MAX_BUFFER_SIZE','yarn.lock','npm','response','指定的打包命令不存在:\x20','dev','package.json\x20读取成功','当前远程分支:\x20','toString','parse','正在清理目标目录...','username','SYNC_DELAY','exit','代码推送完成','服务器授权成功','message','正在请求服务器授权...','构建产物目录不存在,请检查构建输出配置','9cGyzhR','list','非交互模式必须指定打包命令,用法:\x20jjb-cmd\x20push\x20java\x20--build\x20<打包命令>\x20--target\x20<后端分支>','split','91939OOFLYZ','./utils','10ccJOav','网络连接失败:\x20无法连接到服务器','6zpmxIh','index','node_modules',',确认推送到该分支吗?','正在同步\x20Git\x20仓库最新代码...','查询远程分支失败:\x20','npm\x20install','正在复制构建产物到目标目录...','replace','data','javaGitName','配置文件中缺少必要字段:\x20','未检测到认证信息,请先执行登录操作:\x20jjb-cmd\x20login','BUILD_OUTPUT_DIR','3007165sUMIBs','.html','git\x20clone\x20','./crypto-utils','592017PYTnKD','\x22\x20--no-verify','临时工作目录已清理:\x20','未知错误','读取认证信息失败:\x20','1291548yCiRCW','sort','未找到\x20jjb.config.json\x20文件','查询到\x20','force','join','path','trim','已选择后端分支:\x20','授权失败:\x20','git\x20pull','package.json','8rSyAUE','post','confirm','index.html','__esModule','请输入要推送的后端分支名:','非交互模式必须指定后端分支,用法:\x20jjb-cmd\x20push\x20java\x20--build\x20<打包命令>\x20--target\x20<后端分支>','test','selectedScript','javaGit','tmpdir','检测到已存在的仓库,正在强制清理...','分支名不能为空','代码提交跳过:\x20没有需要提交的变更','\x20个远程分支','map','isArray','):\x20','解析\x20package.json\x20失败:\x20','main','uncaughtException','jjb.config.json\x20读取成功','项目依赖安装完成','random','正在查询后端仓库远程分支,校验目标分支...','请选择要执行的打包命令:','keys','master','some','认证信息加载成功','可用的打包命令:\x20','代码提交成功','项目构建完成','build','\x20存在,校验通过','/api/auth','正在执行构建命令:\x20','input','git\x20commit\x20-m\x20\x22','default','git\x20add\x20.','status','未找到打包相关的命令,请检查\x20package.json\x20中的\x20scripts\x20配置','正在切换到目标分支:\x20','目标分支\x20','1573220zYOijS','请输入提交信息:','5801330jNdPxu','toLowerCase','构建产物复制完成','授权失败\x20(','axios','release','解析\x20jjb.config.json\x20失败:\x20','child_process','Git\x20仓库克隆完成','no\x20message','CONFIG_FILE_NAME','push','1875855UdTyoH','TEMPLATES_PATH','length','production','临时工作目录已创建','includes','代码同步完成','清理临时目录失败:\x20','正在添加文件变更...','HEAD','prompt','npm\x20run\x20','appIdentifier','12ZRzWSE','inquirer','使用指定的提交信息:\x20','now','操作失败:\x20'];a6_0x5536=function(){return _0x3a3acc;};return a6_0x5536();}const a6_0x3c5cc6=a6_0x262b;(function(_0x5db2f6,_0x328b9f){const _0x119634=a6_0x262b,_0x45c0d2=_0x5db2f6();while(!![]){try{const _0x8bf3a9=parseInt(_0x119634(0x1ce))/0x1*(-parseInt(_0x119634(0x1d0))/0x2)+-parseInt(_0x119634(0x1e4))/0x3*(-parseInt(_0x119634(0x23d))/0x4)+-parseInt(_0x119634(0x230))/0x5*(parseInt(_0x119634(0x1d2))/0x6)+parseInt(_0x119634(0x1e0))/0x7*(parseInt(_0x119634(0x1f5))/0x8)+parseInt(_0x119634(0x1ca))/0x9*(parseInt(_0x119634(0x224))/0xa)+-parseInt(_0x119634(0x222))/0xb+-parseInt(_0x119634(0x1e9))/0xc;if(_0x8bf3a9===_0x328b9f)break;else _0x45c0d2['push'](_0x45c0d2['shift']());}catch(_0x34c5b4){_0x45c0d2['push'](_0x45c0d2['shift']());}}}(a6_0x5536,0x7e086));const os=require('os'),path=require(a6_0x3c5cc6(0x1ef)),fs=require('fs'),child_process=require(a6_0x3c5cc6(0x22b)),inquirer=require(a6_0x3c5cc6(0x23e)),{CopyFolder,DeleteDirAllFile}=require(a6_0x3c5cc6(0x1cf)),{GIT_TEMP_JAVA,getApiHost}=require(a6_0x3c5cc6(0x251)),axios=require(a6_0x3c5cc6(0x228)),{CONSTANTS,logInfo,logSuccess,logWarning,logError,executeCommand,deleteFolderRecursive,fileExists,readFile,writeFile,createDir,isViteProject,validateConfig}=require(a6_0x3c5cc6(0x1cf)),{loadAuth}=require(a6_0x3c5cc6(0x1e3));function getRemoteBranches(_0x33045c){const _0x2a7b2e=a6_0x3c5cc6,_0x4f8ac5=child_process['execSync']('git\x20ls-remote\x20--heads\x20'+_0x33045c,{'encoding':'utf8'}),_0x2a353b=[_0x2a7b2e(0x210),_0x2a7b2e(0x208),_0x2a7b2e(0x257),'develop',_0x2a7b2e(0x1fc),_0x2a7b2e(0x24c),_0x2a7b2e(0x233),_0x2a7b2e(0x229)];return _0x4f8ac5['split']('\x0a')[_0x2a7b2e(0x204)](_0x19676f=>{const _0x3ab75e=_0x2a7b2e,_0x27fca2=_0x19676f[_0x3ab75e(0x1cd)]('\x09')[0x1]||'';return _0x27fca2[_0x3ab75e(0x1da)](/^refs\/heads\//,'')[_0x3ab75e(0x1f0)]();})[_0x2a7b2e(0x245)](_0x6a9d63=>_0x6a9d63&&_0x6a9d63!==_0x2a7b2e(0x239))[_0x2a7b2e(0x1ea)]((_0x1bae6b,_0x197351)=>{const _0x527c17=_0x2a7b2e,_0x5ce93b=_0x2a353b['indexOf'](_0x1bae6b),_0x2d0bf4=_0x2a353b[_0x527c17(0x247)](_0x197351);if(_0x5ce93b!==-0x1&&_0x2d0bf4!==-0x1)return _0x5ce93b-_0x2d0bf4;if(_0x5ce93b!==-0x1)return-0x1;if(_0x2d0bf4!==-0x1)return 0x1;return _0x1bae6b['localeCompare'](_0x197351);});}async function promptBranchInput(){const _0x28fd1d=a6_0x3c5cc6,{branch:_0x104ddc}=await inquirer[_0x28fd1d(0x23a)]([{'type':_0x28fd1d(0x21a),'name':'branch','message':_0x28fd1d(0x1fa),'default':CONSTANTS[_0x28fd1d(0x248)],'validate':_0x4c1003=>_0x4c1003&&_0x4c1003[_0x28fd1d(0x1f0)]()?!![]:_0x28fd1d(0x201)}]);return(_0x104ddc||'')['trim']()||CONSTANTS[_0x28fd1d(0x248)];}module['exports']=async _0x4f207e=>{const _0x514dab=a6_0x3c5cc6;(_0x4f207e==null||Array[_0x514dab(0x205)](_0x4f207e))&&(_0x4f207e={});const _0x3bd0e7=_0x4f207e['buildScript'],_0xaa9467=_0x4f207e[_0x514dab(0x244)],_0x2be4ad=_0x4f207e[_0x514dab(0x262)],_0x389a6c=!!(_0x3bd0e7||_0xaa9467||_0x2be4ad);let _0x58495e=null;const _0x158c89=path['join'](__dirname,'../.auth');!fileExists(_0x158c89)&&(logError(_0x514dab(0x1de)),process[_0x514dab(0x25f)](0x1));let _0x299bbb,_0x26820c;try{logInfo('正在加载认证信息...');const _0x5f0d76=loadAuth(_0x158c89);_0x299bbb=_0x5f0d76[_0x514dab(0x25d)],_0x26820c=_0x5f0d76['password'],logSuccess(_0x514dab(0x212));}catch(_0x6251fc){logError(_0x514dab(0x1e8)+_0x6251fc[_0x514dab(0x262)]),process[_0x514dab(0x25f)](0x1);}const _0x1297f7=[];if(_0x4f207e[_0x514dab(0x1ed)])_0x1297f7[_0x514dab(0x22f)](_0x514dab(0x1ed));if(_0x4f207e[_0x514dab(0x1d3)])_0x1297f7[_0x514dab(0x22f)](_0x514dab(0x1d3));const _0x166be0=path['resolve']('./'),_0x351632=path[_0x514dab(0x1ee)](_0x166be0,_0x514dab(0x1f4)),_0x1c0584=path['join'](_0x166be0,CONSTANTS[_0x514dab(0x22e)]),_0x269c6c=path[_0x514dab(0x1ee)](_0x166be0,CONSTANTS[_0x514dab(0x1df)]),_0x737b81=os[_0x514dab(0x1ff)](),_0x261b7d=fileExists(path[_0x514dab(0x1ee)](_0x166be0,_0x514dab(0x253)))?'yarn':_0x514dab(0x254),_0x52e906=_0x261b7d==='yarn'?'yarn':_0x514dab(0x1d8),_0xd5c5de=_0x2500a7=>_0x261b7d==='yarn'?'yarn\x20run\x20'+_0x2500a7:_0x514dab(0x23b)+_0x2500a7;logInfo(_0x514dab(0x250));!fileExists(_0x351632)&&(logError('未找到\x20package.json\x20文件'),process[_0x514dab(0x25f)](0x1));let _0x59eeec;try{_0x59eeec=JSON[_0x514dab(0x25b)](fs['readFileSync'](_0x351632,'utf8')),logSuccess(_0x514dab(0x258));}catch(_0x4598ea){logError(_0x514dab(0x207)+_0x4598ea[_0x514dab(0x262)]),process['exit'](0x1);}const _0x3627c5=_0x59eeec['scripts']||{},_0x240090=[_0x514dab(0x216)],_0x4d4560=Object[_0x514dab(0x20f)](_0x3627c5)['filter'](_0xb98515=>{const _0x1255c9=_0x514dab;return _0x240090[_0x1255c9(0x211)](_0x2a1a5a=>_0xb98515[_0x1255c9(0x225)]()[_0x1255c9(0x235)](_0x2a1a5a));});_0x4d4560['length']===0x0&&(logError(_0x514dab(0x21f)),process[_0x514dab(0x25f)](0x1));let _0x4b39ce;if(_0x3bd0e7)_0x3627c5[_0x3bd0e7]?_0x4b39ce=_0x3bd0e7:(logError(_0x514dab(0x256)+_0x3bd0e7),logError(_0x514dab(0x213)+_0x4d4560[_0x514dab(0x1ee)](',\x20')),process[_0x514dab(0x25f)](0x1));else{if(_0x389a6c)logError(_0x514dab(0x1cc)),process[_0x514dab(0x25f)](0x1);else{const _0x579ad3=await inquirer[_0x514dab(0x23a)]([{'type':_0x514dab(0x1cb),'name':'selectedScript','message':_0x514dab(0x20e),'choices':_0x4d4560['map'](_0x373db7=>({'name':_0x373db7+'\x20('+_0x3627c5[_0x373db7]+')','value':_0x373db7}))}]);_0x4b39ce=_0x579ad3[_0x514dab(0x1fd)];}}logInfo('已选择打包命令:\x20'+_0x4b39ce),logInfo(_0x514dab(0x250));!fileExists(_0x1c0584)&&(logError(_0x514dab(0x1eb)),process[_0x514dab(0x25f)](0x1));let _0x5915da;try{_0x5915da=require(_0x1c0584),_0x5915da=_0x5915da[_0x514dab(0x1f9)]?_0x5915da[_0x514dab(0x21c)]:_0x5915da,logSuccess(_0x514dab(0x20a));}catch(_0x1effed){logError(_0x514dab(0x22a)+_0x1effed[_0x514dab(0x262)]),process[_0x514dab(0x25f)](0x1);}const _0x4d27ca=['javaGit','javaGitName',_0x514dab(0x23c)],_0x42de14=validateConfig(_0x5915da,_0x4d27ca);!_0x42de14['isValid']&&(logError(_0x514dab(0x1dd)+_0x42de14['missingFields'][_0x514dab(0x1ee)](',\x20')),process[_0x514dab(0x25f)](0x1));let _0x34cb4d=null;if(_0xaa9467){logInfo(_0x514dab(0x20d));try{const _0x365be2=getRemoteBranches(_0x5915da[_0x514dab(0x1fe)]);_0x365be2[_0x514dab(0x232)]>0x0&&!_0x365be2['includes'](_0xaa9467)&&(logError('指定的后端分支不存在:\x20'+_0xaa9467),logError(_0x514dab(0x259)+_0x365be2[_0x514dab(0x1ee)](',\x20')),process['exit'](0x1)),logSuccess(_0x514dab(0x221)+_0xaa9467+_0x514dab(0x217));}catch(_0x3f5630){logWarning('无法查询远程分支('+_0x3f5630[_0x514dab(0x262)]+'),将直接尝试切换到\x20'+_0xaa9467);}_0x34cb4d=_0xaa9467;}else{if(_0x389a6c)logError(_0x514dab(0x1fb)),process['exit'](0x1);else{logWarning('⚠\x20请仔细核对所选后端分支,选错分支将导致发错版本,直接影响线上环境!');let _0xcdc837=[];try{logInfo(_0x514dab(0x24d)),_0xcdc837=getRemoteBranches(_0x5915da[_0x514dab(0x1fe)]),_0xcdc837[_0x514dab(0x232)]>0x0?logSuccess(_0x514dab(0x1ec)+_0xcdc837[_0x514dab(0x232)]+_0x514dab(0x203)):logWarning('未查询到远程分支,请手动输入分支名');}catch(_0x4c5b3f){logWarning(_0x514dab(0x1d7)+_0x4c5b3f[_0x514dab(0x262)]);}while(!_0x34cb4d){let _0x237cb9;if(_0xcdc837[_0x514dab(0x232)]>0x0){const {targetBranch:_0x1d44cd}=await inquirer[_0x514dab(0x23a)]([{'type':'list','name':_0x514dab(0x244),'message':'请选择要推送的后端分支(务必核对,选错将发错版本):','pageSize':0xf,'choices':_0xcdc837}]);_0x237cb9=_0x1d44cd;}else _0x237cb9=await promptBranchInput();const {confirmed:_0x1021e7}=await inquirer[_0x514dab(0x23a)]([{'type':_0x514dab(0x1f7),'name':'confirmed','message':_0x514dab(0x24f)+_0x237cb9+_0x514dab(0x1d5),'default':![]}]);_0x1021e7?_0x34cb4d=_0x237cb9:logWarning('已取消选择,请重新选择后端分支');}}}logInfo(_0x514dab(0x1f1)+_0x34cb4d),logInfo(_0x514dab(0x263)),axios[_0x514dab(0x1f6)](getApiHost()+_0x514dab(0x218),{'username':_0x299bbb,'password':_0x26820c})['then'](async _0x2b5d68=>{const _0x5b4cbe=_0x514dab;if(_0x2b5d68[_0x5b4cbe(0x1db)][_0x5b4cbe(0x21e)]){logSuccess(_0x5b4cbe(0x261));const _0x52a2d0=GIT_TEMP_JAVA+'-'+Date[_0x5b4cbe(0x240)]()+'-'+Math[_0x5b4cbe(0x20c)]()[_0x5b4cbe(0x25a)](0x24)['substr'](0x2,0x9);_0x58495e=_0x52a2d0;const _0x277207=path[_0x5b4cbe(0x1ee)](_0x737b81,_0x52a2d0);logInfo(_0x5b4cbe(0x24b));fileExists(_0x277207)&&deleteFolderRecursive(_0x277207);createDir(_0x277207),logSuccess(_0x5b4cbe(0x234));const _0x36f43a=path['join'](_0x277207,_0x5915da[_0x5b4cbe(0x1dc)]);logInfo(_0x5b4cbe(0x242)),fileExists(_0x36f43a)?_0x1297f7[_0x5b4cbe(0x235)](_0x5b4cbe(0x1ed))?(logInfo(_0x5b4cbe(0x200)),DeleteDirAllFile(_0x36f43a,()=>{const _0x235815=_0x5b4cbe;executeCommand('git\x20clone\x20'+_0x5915da[_0x235815(0x1fe)],_0x277207),logSuccess(_0x235815(0x22c));})):(executeCommand(_0x5b4cbe(0x1e2)+_0x5915da[_0x5b4cbe(0x1fe)],_0x277207),logSuccess(_0x5b4cbe(0x22c))):(executeCommand(_0x5b4cbe(0x1e2)+_0x5915da[_0x5b4cbe(0x1fe)],_0x277207),logSuccess(_0x5b4cbe(0x22c))),_0x5f40dd(_0x277207,_0x5915da,_0x52a2d0,_0x4b39ce,_0x34cb4d);}else logError(_0x5b4cbe(0x1f2)+(_0x2b5d68[_0x5b4cbe(0x1db)][_0x5b4cbe(0x262)]||_0x5b4cbe(0x1e7))),process['exit'](0x1);})['catch'](_0x3a18b4=>{const _0x1c393d=_0x514dab;if(_0x3a18b4&&_0x3a18b4[_0x1c393d(0x255)]){const _0x2b9525=_0x3a18b4[_0x1c393d(0x255)][_0x1c393d(0x21e)];_0x2b9525===0x191||_0x2b9525===0x193?logError(_0x1c393d(0x227)+_0x2b9525+_0x1c393d(0x243)):logError('请求失败\x20('+_0x2b9525+_0x1c393d(0x206)+(_0x3a18b4['response']['data']?.[_0x1c393d(0x262)]||_0x3a18b4[_0x1c393d(0x262)]));}else _0x3a18b4&&_0x3a18b4['request']?logError(_0x1c393d(0x1d1)):logError(_0x1c393d(0x241)+(_0x3a18b4[_0x1c393d(0x262)]||_0x1c393d(0x1e7)));process[_0x1c393d(0x25f)](0x1);}),process['on'](_0x514dab(0x25f),()=>{const _0x21295a=_0x514dab;if(_0x58495e){const _0x5b1e7c=path[_0x21295a(0x1ee)](os[_0x21295a(0x1ff)](),_0x58495e);if(fileExists(_0x5b1e7c))try{deleteFolderRecursive(_0x5b1e7c);}catch(_0x16f75e){}}}),process['on'](_0x514dab(0x209),_0x573d32=>{if(_0x58495e){const _0x557444=path['join'](os['tmpdir'](),_0x58495e);if(fileExists(_0x557444))try{deleteFolderRecursive(_0x557444);}catch(_0x50cf99){}}throw _0x573d32;});function _0x5f40dd(_0x39ed2f,_0x378a1b,_0xa954b,_0x5c708d,_0x121a51){const _0x283aa4=_0x514dab,_0x26b4b5=path[_0x283aa4(0x1ee)](_0x39ed2f,_0x378a1b['javaGitName']);logInfo(_0x283aa4(0x220)+_0x121a51),executeCommand(_0x283aa4(0x24a)+_0x121a51,_0x26b4b5),logSuccess('分支切换完成'),logInfo(_0x283aa4(0x1d6)),executeCommand('git\x20pull',_0x26b4b5),logSuccess(_0x283aa4(0x236));!fileExists(path['join'](_0x166be0,_0x283aa4(0x1d4)))?(logWarning(_0x283aa4(0x246)),logInfo(_0x283aa4(0x249)+_0x261b7d+'),请稍候...'),executeCommand(_0x52e906,_0x166be0),logSuccess(_0x283aa4(0x20b))):logInfo('项目依赖检查通过');try{logInfo(_0x283aa4(0x219)+_0xd5c5de(_0x5c708d)),executeCommand(_0xd5c5de(_0x5c708d),_0x166be0,{'maxBuffer':CONSTANTS[_0x283aa4(0x252)]}),logSuccess(_0x283aa4(0x215));}catch(_0x136943){logError('项目构建失败:\x20'+_0x136943[_0x283aa4(0x262)]);const _0x573e12=path['join'](os[_0x283aa4(0x1ff)](),_0xa954b);if(fileExists(_0x573e12))try{deleteFolderRecursive(_0x573e12),logInfo('临时工作目录已清理:\x20'+_0xa954b);}catch(_0x16ec14){logWarning(_0x283aa4(0x237)+_0x16ec14[_0x283aa4(0x262)]);}process[_0x283aa4(0x25f)](0x1);}if(fileExists(_0x269c6c)){logInfo('正在处理构建产物...');const _0x5bef7c=_0x378a1b['appIdentifier'],_0x522c64=readFile(path['join'](_0x269c6c,_0x283aa4(0x1f8)));_0x1297f7[_0x283aa4(0x235)](_0x283aa4(0x1d3))?(writeFile(path[_0x283aa4(0x1ee)](_0x269c6c,'index.html'),_0x522c64),logInfo('已生成\x20index.html\x20文件')):(writeFile(path[_0x283aa4(0x1ee)](_0x269c6c,_0x5bef7c+_0x283aa4(0x1e1)),_0x522c64),logInfo('已生成\x20'+_0x5bef7c+'.html\x20文件'));const _0xdb2a8e=path['join'](_0x26b4b5,CONSTANTS[_0x283aa4(0x231)]);logInfo('正在创建模板目录...'),createDir(_0xdb2a8e);const _0x307cfd=path[_0x283aa4(0x1ee)](_0xdb2a8e,_0x378a1b[_0x283aa4(0x23c)]);logInfo(_0x283aa4(0x25c)),DeleteDirAllFile(_0x307cfd,()=>{const _0x1cb357=_0x283aa4;createDir(_0x307cfd),logInfo(_0x1cb357(0x1d9)),writeFile(path['join'](_0xdb2a8e,_0x5bef7c+'.html'),_0x522c64),CopyFolder(path[_0x1cb357(0x1ee)](_0x269c6c,_0x378a1b[_0x1cb357(0x23c)]),_0x307cfd,async()=>{const _0x3c04a1=_0x1cb357;logSuccess(_0x3c04a1(0x226)),setTimeout(async()=>{const _0x1ce91=_0x3c04a1;logInfo('正在同步远程仓库...'),executeCommand(_0x1ce91(0x1f3),_0x26b4b5),logInfo(_0x1ce91(0x238)),executeCommand(_0x1ce91(0x21d),_0x26b4b5);let _0x121ee3;if(_0x2be4ad&&_0x2be4ad[_0x1ce91(0x1f0)]())_0x121ee3=_0x2be4ad[_0x1ce91(0x1f0)](),logInfo(_0x1ce91(0x23f)+_0x121ee3);else{if(_0x389a6c)_0x121ee3=_0x1ce91(0x22d);else{const {commitMessage:_0x2dd613}=await inquirer['prompt']([{'type':_0x1ce91(0x21a),'name':'commitMessage','message':_0x1ce91(0x223),'default':_0x1ce91(0x22d)}]);_0x121ee3=_0x2dd613['trim']()||'no\x20message';}}try{logInfo('正在提交代码变更...'),executeCommand(_0x1ce91(0x21b)+_0x121ee3+_0x1ce91(0x1e5),_0x26b4b5),logSuccess(_0x1ce91(0x214));}catch(_0x59bf9a){logWarning(_0x1ce91(0x202));}logInfo('正在推送代码到远程仓库...'),executeCommand(_0x1ce91(0x24e),_0x26b4b5),logSuccess(_0x1ce91(0x260)),setTimeout(()=>{const _0x4edfb9=_0x1ce91;logInfo('正在清理临时工作目录...');const _0x4ece3e=path['join'](os['tmpdir'](),_0xa954b);if(fileExists(_0x4ece3e))try{deleteFolderRecursive(_0x4ece3e),logSuccess(_0x4edfb9(0x1e6)+_0xa954b);}catch(_0x1d4700){logWarning(_0x4edfb9(0x237)+_0x1d4700[_0x4edfb9(0x262)]);}},CONSTANTS[_0x1ce91(0x25e)]*0x2);},CONSTANTS['SYNC_DELAY']);});});}else{logError(_0x283aa4(0x264));const _0x1c3d1a=path[_0x283aa4(0x1ee)](os[_0x283aa4(0x1ff)](),_0xa954b);if(fileExists(_0x1c3d1a))try{deleteFolderRecursive(_0x1c3d1a),logInfo(_0x283aa4(0x1e6)+_0xa954b);}catch(_0x1bd461){logWarning(_0x283aa4(0x237)+_0x1bd461['message']);}process[_0x283aa4(0x25f)](0x1);}}};
|
package/src/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a7_0x38f62f=a7_0x19d5;(function(_0x2d284a,_0x2a8b28){const _0x154988=a7_0x19d5,_0x1f604d=_0x2d284a();while(!![]){try{const _0xdb6b69=parseInt(_0x154988(0x99))/0x1*(-parseInt(_0x154988(0xb8))/0x2)+-parseInt(_0x154988(0x8f))/0x3+-parseInt(_0x154988(0xba))/0x4*(parseInt(_0x154988(0x97))/0x5)+-parseInt(_0x154988(0xb0))/0x6+parseInt(_0x154988(0xb6))/0x7*(-parseInt(_0x154988(0xa5))/0x8)+-parseInt(_0x154988(0x9f))/0x9+parseInt(_0x154988(0x98))/0xa*(parseInt(_0x154988(0xa3))/0xb);if(_0xdb6b69===_0x2a8b28)break;else _0x1f604d['push'](_0x1f604d['shift']());}catch(_0x4c224e){_0x1f604d['push'](_0x1f604d['shift']());}}}(a7_0x231e,0xe9a60));const fs=require('fs'),path=require(a7_0x38f62f(0xb3)),child_process=require('child_process'),chalk=require(a7_0x38f62f(0xaf)),CONSTANTS={'MAX_BUFFER_SIZE':0x3b9aca00,'SYNC_DELAY':0x3e8,'DEFAULT_BRANCH':'master','CONFIG_FILE_NAME':a7_0x38f62f(0xb2),'BUILD_OUTPUT_DIR':a7_0x38f62f(0xac),'TEMPLATES_PATH':a7_0x38f62f(0xa7)};function logInfo(_0x56a9a5,_0xb26941=''){const _0x2b8cfd=a7_0x38f62f,_0x18641d=chalk['blue']('ℹ'),_0x5c98c4=_0xb26941?_0x18641d+'\x20'+_0x56a9a5+'\x20'+_0xb26941:_0x18641d+'\x20'+_0x56a9a5;console[_0x2b8cfd(0x92)](_0x5c98c4);}function a7_0x231e(){const _0x4aa109=['vite.config.js','message','2467764vKUOJL','readFileSync','isDirectory','log','vite.config.mjs','rmdirSync','existsSync','length','381295cMsBJG','34930IHjRzO','75365GsOnNP','dirname','lstatSync','unlinkSync','error','writeFileSync','15878349pYQePH','stat','createWriteStream','utf8','21351DaFAgV','mkdirSync','8OpewMg','execSync','start/src/main/resources/templates','mkdir','close','statSync','pipe','dist','forEach','创建目录失败:\x20','chalk','2890962YkrGin','filter','jjb.config.js','path','yellow','join','3296391VnifsG','[工作目录:\x20','10cWyHRf','readdirSync','100ZWVMSd','createReadStream'];a7_0x231e=function(){return _0x4aa109;};return a7_0x231e();}function logSuccess(_0x5a7911){const _0x527755=a7_0x38f62f;console[_0x527755(0x92)](chalk['green']('✓\x20'+_0x5a7911));}function logWarning(_0x4646a0){const _0x377541=a7_0x38f62f;console['log'](chalk[_0x377541(0xb4)]('⚠\x20'+_0x4646a0));}function logError(_0x5670fb){console['log'](chalk['red']('✗\x20'+_0x5670fb));}function executeCommand(_0x1e33c8,_0x4c650f,_0x163702={}){const _0x200ee4=a7_0x38f62f;return logInfo('执行命令:\x20'+_0x1e33c8,_0x4c650f?_0x200ee4(0xb7)+_0x4c650f+']':''),child_process[_0x200ee4(0xa6)](_0x1e33c8,{'cwd':_0x4c650f,..._0x163702});}function deleteFolderRecursive(_0x54e728){const _0x840625=a7_0x38f62f;fs['existsSync'](_0x54e728)&&(fs['readdirSync'](_0x54e728)[_0x840625(0xad)](_0x6df1bc=>{const _0x577d7d=_0x840625,_0x4b54a5=path[_0x577d7d(0xb5)](_0x54e728,_0x6df1bc);fs[_0x577d7d(0x9b)](_0x4b54a5)[_0x577d7d(0x91)]()?deleteFolderRecursive(_0x4b54a5):fs['unlinkSync'](_0x4b54a5);}),fs[_0x840625(0x94)](_0x54e728));}function fileExists(_0x245845){const _0x49c156=a7_0x38f62f;return fs[_0x49c156(0x95)](_0x245845);}function readFile(_0xca1e66,_0x5e248c=a7_0x38f62f(0xa2)){const _0xd529a8=a7_0x38f62f;return fs[_0xd529a8(0x90)](_0xca1e66,_0x5e248c);}function a7_0x19d5(_0x4538ed,_0x23fedb){_0x4538ed=_0x4538ed-0x8d;const _0x231ee3=a7_0x231e();let _0x19d51e=_0x231ee3[_0x4538ed];return _0x19d51e;}function writeFile(_0x587df2,_0x446481,_0x34299c=a7_0x38f62f(0xa2)){const _0x89ecd4=a7_0x38f62f;fs[_0x89ecd4(0x9e)](_0x587df2,_0x446481,_0x34299c);}function createDir(_0x171b50){const _0x45e391=a7_0x38f62f;!fs[_0x45e391(0x95)](_0x171b50)&&fs[_0x45e391(0xa4)](_0x171b50,{'recursive':!![]});}function isViteProject(_0x2389fa){const _0x501c9d=a7_0x38f62f;return fileExists(path[_0x501c9d(0xb5)](_0x2389fa,_0x501c9d(0x8d)))||fileExists(path['join'](_0x2389fa,'vite.config.ts'))||fileExists(path[_0x501c9d(0xb5)](_0x2389fa,_0x501c9d(0x93)));}function validateConfig(_0x524252,_0x5412da){const _0x1c9f85=a7_0x38f62f,_0x2c82de=_0x5412da[_0x1c9f85(0xb1)](_0x18e52f=>!_0x524252[_0x18e52f]);return{'isValid':_0x2c82de[_0x1c9f85(0x96)]===0x0,'missingFields':_0x2c82de};}function DeleteDirAllFile(_0x197a7c,_0x5f5840){const _0x1d107b=a7_0x38f62f;let _0x2f2572=[];fs[_0x1d107b(0x95)](_0x197a7c)?(_0x2f2572=fs[_0x1d107b(0xb9)](_0x197a7c),_0x2f2572[_0x1d107b(0xad)](function(_0x52b12c,_0x43896c){const _0x2ef03e=_0x1d107b;let _0xa8ee55=path[_0x2ef03e(0xb5)](_0x197a7c,_0x52b12c);fs[_0x2ef03e(0xaa)](_0xa8ee55)[_0x2ef03e(0x91)]()?DeleteDirAllFile(_0xa8ee55):fs[_0x2ef03e(0x9c)](_0xa8ee55);}),fs[_0x1d107b(0x94)](_0x197a7c),_0x5f5840&&_0x5f5840()):_0x5f5840&&_0x5f5840();}function CopyFile(_0xf01bd8,_0x503ef1,_0x338b58){const _0x394091=a7_0x38f62f,_0x2d5f4b=path[_0x394091(0x9a)](_0x503ef1);!fs[_0x394091(0x95)](_0x2d5f4b)&&fs[_0x394091(0xa4)](_0x2d5f4b,{'recursive':!![]});const _0xf17373=fs[_0x394091(0xbb)](_0xf01bd8),_0x5b238b=fs[_0x394091(0xa1)](_0x503ef1);_0xf17373['pipe'](_0x5b238b),_0x5b238b['on'](_0x394091(0xa9),function(){_0x338b58&&_0x338b58();}),_0x5b238b['on'](_0x394091(0x9d),function(_0x16c966){const _0x3046e6=_0x394091;logError('文件复制失败:\x20'+_0x16c966[_0x3046e6(0x8e)]),_0x338b58&&_0x338b58();});}function CopyFolder(_0x91547b,_0x4fc3f0,_0x37d64d){const _0x508e44=a7_0x38f62f;!fs['existsSync'](_0x4fc3f0)&&fs[_0x508e44(0xa4)](_0x4fc3f0,{'recursive':!![]}),fs['readdir'](_0x91547b,function(_0x1b9be3,_0x19e380){let _0x60f18a=0x0;const _0x46147b=function(){const _0x4fac92=a7_0x19d5;++_0x60f18a===_0x19e380[_0x4fac92(0x96)]&&_0x37d64d&&_0x37d64d();};if(_0x1b9be3){_0x46147b();return;}_0x19e380['forEach'](function(_0x292957){const _0x102628=a7_0x19d5,_0x1f6219=path[_0x102628(0xb5)](_0x91547b,_0x292957),_0x2448ba=path[_0x102628(0xb5)](_0x4fc3f0,_0x292957);fs[_0x102628(0xa0)](_0x1f6219,function(_0x510e14,_0x1c37d6){const _0x2dc14f=_0x102628;if(_0x1c37d6[_0x2dc14f(0x91)]())fs[_0x2dc14f(0xa8)](_0x2448ba,{'recursive':!![]},function(_0x129d59){const _0x3dd35e=_0x2dc14f;if(_0x129d59){logError(_0x3dd35e(0xae)+_0x129d59['message']);return;}CopyFolder(_0x1f6219,_0x2448ba,_0x46147b);});else{const _0x24fcbb=fs['createReadStream'](_0x1f6219),_0x4fc527=fs[_0x2dc14f(0xa1)](_0x2448ba);_0x24fcbb[_0x2dc14f(0xab)](_0x4fc527),_0x4fc527['on'](_0x2dc14f(0xa9),_0x46147b),_0x4fc527['on']('error',_0x46147b);}});}),_0x19e380['length']===0x0&&_0x37d64d&&_0x37d64d();});}module['exports']={'CONSTANTS':CONSTANTS,'logInfo':logInfo,'logSuccess':logSuccess,'logWarning':logWarning,'logError':logError,'executeCommand':executeCommand,'deleteFolderRecursive':deleteFolderRecursive,'fileExists':fileExists,'readFile':readFile,'writeFile':writeFile,'createDir':createDir,'isViteProject':isViteProject,'validateConfig':validateConfig,'DeleteDirAllFile':DeleteDirAllFile,'CopyFile':CopyFile,'CopyFolder':CopyFolder};
|