From e191aca41fdd96334d4dbd22be6b1095ec4af30a Mon Sep 17 00:00:00 2001 From: whyour Date: Wed, 10 Jul 2024 23:29:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- .prettierignore | 1 - back/config/index.ts | 7 +- back/loaders/initFile.ts | 6 + back/loaders/initTask.ts | 2 +- back/services/system.ts | 4 + docker/310.Dockerfile | 2 +- docker/Dockerfile | 2 +- package.json | 4 +- pnpm-lock.yaml | 293 ++------------------------------- shell/api.sh | 2 +- shell/check.sh | 2 +- shell/otask.sh | 118 ++++++++----- shell/preload/sitecustomize.js | 30 ++++ shell/preload/sitecustomize.py | 44 +++++ shell/pub.sh | 2 +- shell/share.sh | 22 ++- shell/task.sh | 8 +- 18 files changed, 210 insertions(+), 343 deletions(-) create mode 100644 shell/preload/sitecustomize.js create mode 100644 shell/preload/sitecustomize.py diff --git a/.gitignore b/.gitignore index 5190b541..584181f5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ .env .history .version.ts -/.tmp \ No newline at end of file +/.tmp +__pycache__ +/shell/preload/env.* diff --git a/.prettierignore b/.prettierignore index 5179ceca..9e89e44f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,7 +2,6 @@ **/*.svg **/*.ejs **/*.html -package.json .umi .umi-production .umi-test diff --git a/back/config/index.ts b/back/config/index.ts index b9d33b85..536a5eb2 100644 --- a/back/config/index.ts +++ b/back/config/index.ts @@ -26,6 +26,7 @@ if (process.env.QL_DATA_DIR) { } const shellPath = path.join(rootPath, 'shell/'); +const preloadPath = path.join(shellPath, 'preload/'); const tmpPath = path.join(rootPath, '.tmp/'); const samplePath = path.join(rootPath, 'sample/'); const configPath = path.join(dataPath, 'config/'); @@ -37,9 +38,9 @@ const uploadPath = path.join(dataPath, 'upload/'); const sshdPath = path.join(dataPath, 'ssh.d/'); const systemLogPath = path.join(dataPath, 'syslog/'); -const envFile = path.join(configPath, 'env.sh'); -const jsEnvFile = path.join(configPath, 'env.js'); -const pyEnvFile = path.join(configPath, 'env.py'); +const envFile = path.join(preloadPath, 'env.sh'); +const jsEnvFile = path.join(preloadPath, 'env.js'); +const pyEnvFile = path.join(preloadPath, 'env.py'); const confFile = path.join(configPath, 'config.sh'); const crontabFile = path.join(configPath, 'crontab.list'); const authConfigFile = path.join(configPath, 'auth.json'); diff --git a/back/loaders/initFile.ts b/back/loaders/initFile.ts index 7b694e7a..9aa057e5 100644 --- a/back/loaders/initFile.ts +++ b/back/loaders/initFile.ts @@ -11,6 +11,7 @@ if (process.env.QL_DATA_DIR) { dataPath = process.env.QL_DATA_DIR.replace(/\/$/g, ''); } +const preloadPath = path.join(rootPath, 'shell/preload/'); const configPath = path.join(dataPath, 'config/'); const scriptPath = path.join(dataPath, 'scripts/'); const logPath = path.join(dataPath, 'log/'); @@ -38,6 +39,7 @@ export default async () => { const authFileExist = await fileExist(authConfigFile); const confFileExist = await fileExist(confFile); const scriptDirExist = await fileExist(scriptPath); + const preloadDirExist = await fileExist(preloadPath); const logDirExist = await fileExist(logPath); const configDirExist = await fileExist(configPath); const uploadDirExist = await fileExist(uploadPath); @@ -59,6 +61,10 @@ export default async () => { await fs.mkdir(scriptPath); } + if (!preloadDirExist) { + await fs.mkdir(preloadPath); + } + if (!logDirExist) { await fs.mkdir(logPath); } diff --git a/back/loaders/initTask.ts b/back/loaders/initTask.ts index fa84ddb0..33a249ad 100644 --- a/back/loaders/initTask.ts +++ b/back/loaders/initTask.ts @@ -12,7 +12,7 @@ export default async () => { const subscriptionService = Container.get(SubscriptionService); // 生成内置token - let tokenCommand = `tsx ${join(config.rootPath, 'back/token.ts')}`; + let tokenCommand = `ts-node-transpile-only ${join(config.rootPath, 'back/token.ts')}`; const tokenFile = join(config.rootPath, 'static/build/token.js'); if (await fileExist(tokenFile)) { diff --git a/back/services/system.ts b/back/services/system.ts index 812be695..193a09e4 100644 --- a/back/services/system.ts +++ b/back/services/system.ts @@ -33,6 +33,7 @@ import taskLimit from '../shared/pLimit'; import NotificationService from './notify'; import ScheduleService, { TaskCallbacks } from './schedule'; import SockService from './sock'; +import os from 'os'; @Service() export default class SystemService { @@ -205,6 +206,9 @@ export default class SystemService { }); let defaultDomain = 'https://dl-cdn.alpinelinux.org'; let targetDomain = 'https://dl-cdn.alpinelinux.org'; + if (os.platform() !== 'linux') { + return; + } const content = await fs.promises.readFile('/etc/apk/repositories', { encoding: 'utf-8', }); diff --git a/docker/310.Dockerfile b/docker/310.Dockerfile index 99a0233b..21877a0c 100644 --- a/docker/310.Dockerfile +++ b/docker/310.Dockerfile @@ -3,7 +3,7 @@ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ RUN set -x \ && apk update \ && apk add nodejs npm git \ - && npm i -g pnpm@8.3.1 pm2 tsx \ + && npm i -g pnpm@8.3.1 pm2 ts-node \ && cd /tmp/build \ && pnpm install --prod diff --git a/docker/Dockerfile b/docker/Dockerfile index c21f1282..f8846fb4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,7 +3,7 @@ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ RUN set -x \ && apk update \ && apk add nodejs npm git \ - && npm i -g pnpm@8.3.1 pm2 tsx \ + && npm i -g pnpm@8.3.1 pm2 ts-node \ && cd /tmp/build \ && pnpm install --prod diff --git a/package.json b/package.json index f6477b5b..e5bd8752 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,8 @@ "yargs": "^17.3.1", "tough-cookie": "^4.0.0", "request-ip": "3.3.0", - "ip2region": "2.3.0" + "ip2region": "2.3.0", + "ts-node": "10.9.2" }, "devDependencies": { "@ant-design/icons": "^4.7.0", @@ -166,7 +167,6 @@ "ts-node": "^10.6.0", "ts-proto": "^1.146.0", "tslib": "^2.4.0", - "tsx": "^4.7.3", "typescript": "5.2.2", "vh-check": "^2.0.5", "virtualizedtableforantd4": "1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07a559cd..445a8fbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -122,6 +122,9 @@ dependencies: tough-cookie: specifier: ^4.0.0 version: 4.0.0 + ts-node: + specifier: 10.9.2 + version: 10.9.2(@types/node@17.0.45)(typescript@5.2.2) typedi: specifier: ^0.10.0 version: 0.10.0 @@ -319,18 +322,12 @@ devDependencies: sockjs-client: specifier: ^1.6.0 version: 1.6.1 - ts-node: - specifier: ^10.6.0 - version: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) ts-proto: specifier: ^1.146.0 version: 1.148.2 tslib: specifier: ^2.4.0 version: 2.5.3 - tsx: - specifier: ^4.7.3 - version: 4.7.3 typescript: specifier: 5.2.2 version: 5.2.2 @@ -3113,7 +3110,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true + dev: false /@csstools/postcss-color-function@1.1.1(postcss@8.4.24): resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} @@ -3399,15 +3396,6 @@ packages: get-tsconfig: 4.7.3 dev: true - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -3417,15 +3405,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.17.19: resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -3435,15 +3414,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -3453,15 +3423,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -3471,15 +3432,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -3489,15 +3441,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -3507,15 +3450,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -3525,15 +3459,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.17.19: resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -3543,15 +3468,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.17.19: resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -3561,15 +3477,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -3579,15 +3486,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -3597,15 +3495,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -3615,15 +3504,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -3633,15 +3513,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -3651,15 +3522,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -3669,15 +3531,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -3687,15 +3540,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -3705,15 +3549,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -3723,15 +3558,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -3741,15 +3567,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -3759,15 +3576,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -3777,15 +3585,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -3795,15 +3594,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.35.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4071,7 +3861,7 @@ packages: /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true + dev: false /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} @@ -4091,7 +3881,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} @@ -4105,7 +3894,7 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true + dev: false /@juggle/resize-observer@3.4.0: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} @@ -4981,19 +4770,19 @@ packages: /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true + dev: false /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + dev: false /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + dev: false /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + dev: false /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} @@ -6377,13 +6166,11 @@ packages: /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /add-dom-event-listener@1.1.0: resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} @@ -6677,7 +6464,7 @@ packages: /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + dev: false /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -7825,7 +7612,7 @@ packages: /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + dev: false /crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -8217,7 +8004,6 @@ packages: /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true /diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} @@ -8650,37 +8436,6 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - dev: true - /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -11046,7 +10801,7 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + dev: false /make-fetch-happen@9.1.0: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} @@ -15717,8 +15472,8 @@ packages: resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} dev: false - /ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@types/node@17.0.45)(typescript@5.2.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -15746,7 +15501,7 @@ packages: typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true + dev: false /ts-poet@6.4.1: resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} @@ -15806,17 +15561,6 @@ packages: fsevents: 2.3.3 dev: true - /tsx@4.7.3: - resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} - engines: {node: '>=18.0.0'} - hasBin: true - dependencies: - esbuild: 0.19.12 - get-tsconfig: 4.7.3 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /tty-browserify@0.0.0: resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} dev: true @@ -15917,7 +15661,6 @@ packages: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true - dev: true /umi@4.0.72(@types/node@17.0.45)(@types/react@18.2.8)(eslint@8.35.0)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(sockjs-client@1.6.1)(stylelint@14.8.2)(typescript@5.2.2)(webpack@5.85.1): resolution: {integrity: sha512-VXXwhHtZAApRR02c2F+uDv84m/Bf5g56pMKrArtIUFsrWM8hqS3f7whzgpdjzh0H8EFjpXwan0kJrkXFr6dAPg==} @@ -16204,7 +15947,7 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + dev: false /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} @@ -16632,7 +16375,7 @@ packages: /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true + dev: false /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} diff --git a/shell/api.sh b/shell/api.sh index 1e20d050..22497f8a 100755 --- a/shell/api.sh +++ b/shell/api.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash create_token() { - local token_command="tsx ${dir_root}/back/token.ts" + local token_command="ts-node-transpile-only ${dir_root}/back/token.ts" local token_file="${dir_root}/static/build/token.js" if [[ -f $token_file ]]; then token_command="node ${token_file}" diff --git a/shell/check.sh b/shell/check.sh index 3df4c113..737c6972 100755 --- a/shell/check.sh +++ b/shell/check.sh @@ -73,7 +73,7 @@ check_pm2() { main() { echo -e "=====> 开始检测" - npm i -g pnpm@8.3.1 pm2 tsx + npm i -g pnpm@8.3.1 pm2 ts-node patch_version reset_env diff --git a/shell/otask.sh b/shell/otask.sh index b895bd8e..290a293a 100755 --- a/shell/otask.sh +++ b/shell/otask.sh @@ -91,6 +91,12 @@ env_str_to_array() { read -ra array <<<"${!env_param}" } +clear_non_sh_env() { + if [[ $file_param != *.sh ]]; then + clear_env + fi +} + ## 正常运行单个脚本,$1:传入参数 run_normal() { local file_param=$1 @@ -105,37 +111,34 @@ run_normal() { file_param=${file_param/$relative_path\//} fi - $timeoutCmd $which_program $file_param "${script_params[@]}" + if [[ $isJsOrPythonFile == 'false' ]]; then + clear_non_sh_env + fi + configDir="${dir_config}" $timeoutCmd $which_program $file_param "${script_params[@]}" +} + +handle_env_split() { + if [[ ! $num_param ]]; then + num_param="1-max" + fi + + env_str_to_array + local tempArr=$(echo $num_param | sed "s/-max/-${#array[@]}/g" | sed "s/max-/${#array[@]}-/g" | perl -pe "s|(\d+)(-\|~\|_)(\d+)|{\1..\3}|g") + local runArr=($(eval echo $tempArr)) + array_run=($(awk -v RS=' ' '!a[$1]++' <<<${runArr[@]})) } ## 并发执行时,设定的 RandomDelay 不会生效,即所有任务立即执行 run_concurrent() { local file_param="$1" local env_param="$2" - local num_param=$(echo "$3" | perl -pe "s|.*$2(.*)|\1|") + local num_param=$(echo "$3" | perl -pe "s|.*$2(.*)|\1|" | awk '{$1=$1};1') if [[ ! $env_param ]]; then echo -e "\n 缺少并发运行的环境变量参数" exit 1 fi - env_str_to_array - local tempArr=$(echo $num_param | sed "s/-max/-${#array[@]}/g" | sed "s/max-/${#array[@]}-/g" | perl -pe "s|(\d+)(-\|~\|_)(\d+)|{\1..\3}|g") - local runArr=($(eval echo $tempArr)) - runArr=($(awk -v RS=' ' '!a[$1]++' <<<${runArr[@]})) - - local n=0 - for i in ${runArr[@]}; do - array_run[n]=${array[$i - 1]} - let n++ - done - - local cookieStr=$( - IFS="&" - echo "${array_run[*]}" - ) - [[ ! -z $cookieStr ]] && export "${env_param}=${cookieStr}" - - env_str_to_array + handle_env_split single_log_time=$(date "+%Y-%m-%d-%H-%M-%S.%3N") cd $dir_scripts @@ -144,15 +147,24 @@ run_concurrent() { cd ${relative_path} file_param=${file_param/$relative_path\//} fi - for i in "${!array[@]}"; do - export "${env_param}=${array[i]}" - single_log_path="$dir_log/$log_dir/${single_log_time}_$((i + 1)).log" - eval $timeoutCmd $which_program $file_param "${script_params[@]}" &>$single_log_path & + + local j=0 + for i in ${array_run[@]}; do + single_log_path="$dir_log/$log_dir/${single_log_time}_$((j + 1)).log" + let j++ + + if [[ $isJsOrPythonFile == 'false' ]]; then + export "${env_param}=${array[$i - 1]}" + clear_non_sh_env + fi + eval configDir="${dir_config}" envParam="${env_param}" numParam="${i}" $timeoutCmd $which_program $file_param "${script_params[@]}" &>$single_log_path & done wait - for i in "${!array[@]}"; do - single_log_path="$dir_log/$log_dir/${single_log_time}_$((i + 1)).log" + local k=0 + for i in ${array_run[@]}; do + single_log_path="$dir_log/$log_dir/${single_log_time}_$((k + 1)).log" + let k++ cat $single_log_path [[ -f $single_log_path ]] && rm -f $single_log_path done @@ -161,28 +173,27 @@ run_concurrent() { run_designated() { local file_param="$1" local env_param="$2" - local num_param=$(echo "$3" | perl -pe "s|.*$2(.*)|\1|") - if [[ ! $env_param ]] || [[ ! $num_param ]]; then - echo -e "\n 缺少单独运行的参数 task xxx.js desi Test 1 3" + local num_param=$(echo "$3" | perl -pe "s|.*$2(.*)|\1|" | awk '{$1=$1};1') + if [[ ! $env_param ]]; then + echo -e "\n 缺少单独运行的参数 task xxx.js desi Test" exit 1 fi - env_str_to_array - local tempArr=$(echo $num_param | sed "s/-max/-${#array[@]}/g" | sed "s/max-/${#array[@]}-/g" | perl -pe "s|(\d+)(-\|~\|_)(\d+)|{\1..\3}|g") - local runArr=($(eval echo $tempArr)) - runArr=($(awk -v RS=' ' '!a[$1]++' <<<${runArr[@]})) + handle_env_split - local n=0 - for i in ${runArr[@]}; do - array_run[n]=${array[$i - 1]} - let n++ - done - - local cookieStr=$( - IFS="&" - echo "${array_run[*]}" - ) - [[ ! -z $cookieStr ]] && export "${env_param}=${cookieStr}" + if [[ $isJsOrPythonFile == 'false' ]]; then + local n=0 + for i in ${array_run[@]}; do + array_str[n]=${array[$i - 1]} + let n++ + done + local envStr=$( + IFS="&" + echo "${array_str[*]}" + ) + [[ ! -z $envStr ]] && export "${env_param}=${envStr}" + clear_non_sh_env + fi cd $dir_scripts local relative_path="${file_param%/*}" @@ -190,7 +201,8 @@ run_designated() { cd ${relative_path} file_param=${file_param/$relative_path\//} fi - $timeoutCmd $which_program $file_param "${script_params[@]}" + + configDir="${dir_config}" envParam="${env_param}" numParam="${num_param}" $timeoutCmd $which_program $file_param "${script_params[@]}" } ## 运行其他命令 @@ -206,11 +218,26 @@ run_else() { shift + clear_non_sh_env $timeoutCmd $which_program $file_param "$@" } ## 命令检测 main() { + isJsOrPythonFile="false" + if [[ $1 == *.js ]] || [[ $1 == *.py ]] || [[ $1 == *.pyc ]] || [[ $1 == *.ts ]]; then + isJsOrPythonFile="true" + fi + if [[ -f $file_env ]]; then + if [[ $isJsOrPythonFile == 'true' ]]; then + export NODE_OPTIONS="${NODE_OPTIONS} -r ${preload_js_file}" + export PYTHONPATH="${PYTHONPATH}:${dir_preload}" + else + get_env_array + . $file_env + fi + fi + if [[ $1 == *.js ]] || [[ $1 == *.py ]] || [[ $1 == *.pyc ]] || [[ $1 == *.sh ]] || [[ $1 == *.ts ]]; then case $# in 1) @@ -245,4 +272,5 @@ handle_task_start "${task_shell_params[@]}" run_task_before "${task_shell_params[@]}" main "${task_shell_params[@]}" run_task_after "${task_shell_params[@]}" +clear_env handle_task_end "${task_shell_params[@]}" diff --git a/shell/preload/sitecustomize.js b/shell/preload/sitecustomize.js new file mode 100644 index 00000000..aeb147ba --- /dev/null +++ b/shell/preload/sitecustomize.js @@ -0,0 +1,30 @@ +require(`./env.js`); + +function expandRange(rangeStr, max) { + const tempRangeStr = rangeStr + .trim() + .replace(/-max/g, `-${max}`) + .replace(/max-/g, `${max}-`); + + return tempRangeStr.split(' ').flatMap((part) => { + const rangeMatch = part.match(/^(\d+)([-~_])(\d+)$/); + if (rangeMatch) { + const [, start, , end] = rangeMatch.map(Number); + return Array.from({ length: end - start + 1 }, (_, i) => start + i); + } + return Number(part); + }); +} + +function run() { + if (process.env.envParam && process.env.numParam) { + const { envParam, numParam } = process.env; + const array = (process.env[envParam] || '').split('&'); + const runArr = expandRange(numParam, array.length); + const arrayRun = runArr.map((i) => array[i - 1]); + const envStr = arrayRun.join('&'); + process.env[envParam] = envStr; + } +} + +run(); diff --git a/shell/preload/sitecustomize.py b/shell/preload/sitecustomize.py new file mode 100644 index 00000000..b415877e --- /dev/null +++ b/shell/preload/sitecustomize.py @@ -0,0 +1,44 @@ +import os +import re +import env + + +def try_parse_int(value): + try: + return int(value) + except ValueError: + return None + + +def expand_range(range_str, max_value): + temp_range_str = ( + range_str.strip() + .replace("-max", f"-{max_value}") + .replace("max-", f"{max_value}-") + ) + + result = [] + for part in temp_range_str.split(" "): + range_match = re.match(r"^(\d+)([-~_])(\d+)$", part) + if range_match: + start, _, end = map(try_parse_int, range_match.groups()) + result.extend(range(start, end + 1)) + else: + result.append(int(part)) + + return result + + +def run(): + env_param = os.getenv("envParam") + num_param = os.getenv("numParam") + + if env_param and num_param: + array = (os.getenv(env_param) or "").split("&") + run_arr = expand_range(num_param, len(array)) + array_run = [array[i - 1] for i in run_arr if i - 1 < len(array) and i > 0] + env_str = "&".join(array_run) + os.environ[env_param] = env_str + + +run() diff --git a/shell/pub.sh b/shell/pub.sh index 333b82d9..e591e59b 100755 --- a/shell/pub.sh +++ b/shell/pub.sh @@ -11,7 +11,7 @@ echo -e "提交master代码" git push echo -e "更新cdn文件" -tsx sample/tool.ts +ts-node-transpile-only sample/tool.ts string=$(cat version.yaml | grep "version" | egrep "[^ ]*" -o | egrep "\d\.*") version="v$string" diff --git a/shell/share.sh b/shell/share.sh index e019c726..bbf00ea3 100755 --- a/shell/share.sh +++ b/shell/share.sh @@ -10,6 +10,7 @@ if [[ $QL_DATA_DIR ]]; then fi dir_shell=$dir_root/shell +dir_preload=$dir_shell/preload dir_sample=$dir_root/sample dir_static=$dir_root/static dir_config=$dir_data/config @@ -25,7 +26,10 @@ ql_static_repo=$dir_repo/static ## 文件 file_config_sample=$dir_sample/config.sample.sh -file_env=$dir_config/env.sh +file_env=$dir_preload/env.sh +js_file_env=$dir_preload/env.js +py_file_env=$dir_preload/env.py +preload_js_file=$dir_preload/sitecustomize.js file_sharecode=$dir_config/sharecode.sh file_config_user=$dir_config/config.sh file_auth_sample=$dir_sample/auth.sample.json @@ -74,9 +78,6 @@ init_env() { import_config() { [[ -f $file_config_user ]] && . $file_config_user - if [[ $LOAD_ENV != 'false' ]] && [[ -f $file_env ]]; then - . $file_env - fi ql_base_url=${QlBaseUrl:-"/"} ql_port=${QlPort:-"5700"} @@ -439,6 +440,19 @@ init_nginx() { sed -i "s,IPV4_CONFIG,${ipv4Str},g" /etc/nginx/conf.d/front.conf } +get_env_array() { + exported_variables=() + while IFS= read -r line; do + exported_variables+=("$line") + done < <(grep '^export ' $file_env | awk '{print $2}' | cut -d= -f1) +} + +clear_env() { + for var in "${exported_variables[@]}"; do + unset "$var" + done +} + handle_task_start() { [[ $ID ]] && update_cron "\"$ID\"" "0" "$$" "$log_path" "$begin_timestamp" echo -e "## 开始执行... $begin_time\n" diff --git a/shell/task.sh b/shell/task.sh index f6eeea12..e773569b 100755 --- a/shell/task.sh +++ b/shell/task.sh @@ -19,13 +19,9 @@ define_program() { elif [[ $file_param == *.py ]] || [[ $file_param == *.pyc ]]; then which_program="python3" elif [[ $file_param == *.sh ]]; then - which_program="bash" + which_program="." elif [[ $file_param == *.ts ]]; then - if ! type tsx &>/dev/null; then - which_program="ts-node-transpile-only" - else - which_program="tsx" - fi + which_program="ts-node-transpile-only" else which_program="" fi