修复任务执行初始化环境变量 PYTHONPATH 和 NODE_OPTIONS 被清空

This commit is contained in:
whyour 2024-09-10 22:41:39 +08:00
parent 926ad067c1
commit 3d719baa54
3 changed files with 15 additions and 6 deletions

View File

@ -216,12 +216,12 @@ check_file() {
if [[ -f $file_env ]]; then
get_env_array
if [[ $isJsOrPythonFile == 'true' ]]; then
PREV_NODE_OPTIONS="${NODE_OPTIONS:=}"
PREV_PYTHONPATH="${PYTHONPATH:=}"
export PREV_NODE_OPTIONS="${NODE_OPTIONS:=}"
export PREV_PYTHONPATH="${PYTHONPATH:=}"
if [[ $1 == *.js ]] || [[ $1 == *.ts ]] || [[ $1 == *.mjs ]]; then
export NODE_OPTIONS="${NODE_OPTIONS} -r ${file_preload_js}"
export NODE_OPTIONS="-r ${file_preload_js} ${NODE_OPTIONS}"
else
export PYTHONPATH="${PYTHONPATH}:${dir_preload}:${dir_config}"
export PYTHONPATH="${dir_preload}:${dir_config}:${PYTHONPATH}"
fi
else
. $file_env

View File

@ -29,9 +29,12 @@ function run() {
file_task_before_js,
dir_scripts,
task_before,
PREV_NODE_OPTIONS
} = process.env;
try {
process.env.NODE_OPTIONS = PREV_NODE_OPTIONS;
const splitStr = '__sitecustomize__';
const fileName = process.argv[1].replace(`${dir_scripts}/`, '');
let command = `bash -c "source ${file_task_before} ${fileName}`;
@ -43,7 +46,7 @@ function run() {
console.log('执行前置命令\n');
}
const res = execSync(
`${command} && echo -e '${splitStr}' && NODE_OPTIONS= node -p 'JSON.stringify(process.env)'"`,
`${command} && echo -e '${splitStr}' && node -p 'JSON.stringify(process.env)'"`,
{
encoding: 'utf-8',
},

View File

@ -36,6 +36,9 @@ def expand_range(range_str, max_value):
def run():
try:
prev_pythonpath = os.getenv("PREV_PYTHONPATH", "")
os.environ["PYTHONPATH"] = prev_pythonpath
split_str = "__sitecustomize__"
file_name = sys.argv[0].replace(f"{os.getenv('dir_scripts')}/", "")
command = f'bash -c "source {os.getenv("file_task_before")} {file_name}'
@ -46,7 +49,10 @@ def run():
command += f" && eval '{escape_task_before}'"
print("执行前置命令\n")
python_command = "PYTHONPATH= python3 -c 'import os, json; print(json.dumps(dict(os.environ)))'"
prev_pythonpath = os.getenv("PREV_PYTHONPATH", "")
python_command = (
"python3 -c 'import os, json; print(json.dumps(dict(os.environ)))'"
)
command += f" && echo -e '{split_str}' && {python_command}\""
res = subprocess.check_output(command, shell=True, encoding="utf-8")