From e194754dae4d3d0034070f71a24e95f2e4e11949 Mon Sep 17 00:00:00 2001 From: Kuingsmile <96409857+Kuingsmile@users.noreply.github.com> Date: Wed, 28 Jan 2026 20:41:35 +0800 Subject: [PATCH] :sparkles: Feature(custom): support read .env file in script system --- src/main/utils/runScript.ts | 17 +++++++++++++++ src/renderer/i18n/locales/en.json | 1 + src/renderer/i18n/locales/zh-CN.json | 1 + src/renderer/i18n/locales/zh-TW.json | 1 + src/renderer/pages/ScriptPage.vue | 31 ++++++++++++++++++++++++---- src/renderer/utils/static.ts | 2 ++ 6 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/main/utils/runScript.ts b/src/main/utils/runScript.ts index 3f7b789b..d6f644c0 100644 --- a/src/main/utils/runScript.ts +++ b/src/main/utils/runScript.ts @@ -7,9 +7,24 @@ import { scriptsDir } from '@core/datastore/dirs' import picgo from '@core/picgo' import logger from '@core/picgo/logger' import axios from 'axios' +import dotenv from 'dotenv' import fs from 'fs-extra' import { IPicGo } from 'piclist' +function getFreshEnv() { + const envPath = path.join(scriptsDir(), '.env') + + if (fs.existsSync(envPath)) { + const buf = fs.readFileSync(envPath) + const config = dotenv.parse(buf) + for (const k in config) { + process.env[k] = config[k] + } + return config + } + return {} +} + export const scriptLifecycleStages = [ 'onSoftwareOpen', 'onSoftwareClose', @@ -38,6 +53,7 @@ function format(data: unknown): string { export async function runScript(ctx: IPicGo, script: string, extra: Record): Promise { try { + const env = getFreshEnv() const base64Decode = (str: string): string => Buffer.from(str, 'base64').toString('utf-8') const base64Encode = (data: Buffer | string): string => (Buffer.isBuffer(data) ? data : Buffer.from(String(data))).toString('base64') @@ -62,6 +78,7 @@ export async function runScript(ctx: IPicGo, script: string, extra: Record{{ t('pages.scripts.description') }}

+
+ +
+ +
@@ -200,7 +212,18 @@