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

Class EnvSet

client/util/envset.py:22–199  ·  view source on GitHub ↗

环境变量配置

Source from the content-addressed store, hash-verified

20
21
22class EnvSet(object):
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 """设置工具环境变量, 将工具配置文件中的环境变量添加到当前进程环境变量中
73 :param tool_config: 工具配置参数
74 {
75 "common":
76 {
77 "env_path" : {"xxx": "xxx", "xxx": "xxx", ...},
78 "env_value" : {"xxx": "xxx", "xxx": "xxx", ...},
79 "path" : ["xxx", "xxx"],

Callers 15

compressMethod · 0.90
decompress_by_7zMethod · 0.90
analyzeMethod · 0.90
pre_cmdMethod · 0.90
compileMethod · 0.90
analyzeMethod · 0.90
_get_id_severity_mapMethod · 0.90
set_go_envMethod · 0.90
set_py_envMethod · 0.90
add_python_envMethod · 0.90
scanMethod · 0.90
pre_cmdMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected