MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / __update_os_environ

Method __update_os_environ

client/util/envset.py:25–69  ·  view source on GitHub ↗

添加到当前进程的环境变量中.将生效写进函数中,用于逐行生效,多条环境变量设置参数存在一定顺序的依赖。 例如用户填写环境变量: JDK = /data/jdk1.9 PATH = $JDK/bin:$PATH 第二条参数需要在第一条已经生效的情况下执行,因此,环境变量设置改为逐条expandvars与update。 由于函数功能改变,因此将名称改回update_os_environ。 修改待设置的环境变量的编码,并更新到当前进程的环境变量列表中 - 将"当前系统

(self, envs, task_mode = True)

Source from the content-addressed store, hash-verified

23 """环境变量配置
24 """
25 def __update_os_environ(self, envs, task_mode = True):
26 """
27 添加到当前进程的环境变量中.将生效写进函数中,用于逐行生效,多条环境变量设置参数存在一定顺序的依赖。
28 例如用户填写环境变量:
29 JDK = /data/jdk1.9
30 PATH = $JDK/bin:$PATH
31 第二条参数需要在第一条已经生效的情况下执行,因此,环境变量设置改为逐条expandvars与update。
32 由于函数功能改变,因此将名称改回update_os_environ。
33
34 修改待设置的环境变量的编码,并更新到当前进程的环境变量列表中 - 将"当前系统"改为"当前进程",将方法名"update_os_environ" 修改为"revise_os_environ_encode"
35 增加该函数的原因是在Windows设置的环境变量值不能为unicode,
36 如果为unicode且显式传递给subprocess模块,则会报错
37
38 :param envs: dict - 待更新的环境变量列表
39
40 """
41 if not envs:
42 return
43 # 判断path环境变量的修改,是否包含path本身,若无则报出error信息
44 if task_mode:
45 for env_name, env_value in envs.items():
46 if env_name.lower() == 'path':
47 # 检查PATH设置中是否有path本身的环境变量名
48 if env_value.lower().find('path') == -1:
49 logger.info('the path env error: %s' % env_value)
50 break
51 # 检查PATH设置中,PATH自身的引用是否正常,防止误写
52 if not env_value.lower().endswith('path'):
53 index = env_value.lower().find('path') + 4
54 if env_value[index] != ':' and env_value[index] != ';':
55 logger.info('the path env error: %s' % env_value)
56 break
57
58 if platform.system() == 'Windows':
59 for env_name, env_value in envs.items():
60 new_envs = {}
61 # windows设置环境变量,可能使用变量代替具体路径
62 if re.match(r"^%.*%$", env_value.strip()):
63 env_value = os.environ.get(env_value.strip("%"), "")
64 new_envs[env_name] = os.path.expandvars(env_value)
65 os.environ.update(new_envs)
66 else:
67 for env_name, env_value in envs.items():
68 logger.debug(f">>> set env {env_name}={os.path.expandvars(env_value)}")
69 os.environ.update({env_name: os.path.expandvars(env_value)})
70
71 def set_tool_env(self, tool_config):
72 """设置工具环境变量, 将工具配置文件中的环境变量添加到当前进程环境变量中

Callers 2

set_tool_envMethod · 0.95
set_task_envMethod · 0.95

Calls 4

debugMethod · 0.80
infoMethod · 0.45
getMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected