OpenSCA-cli/analyzer/python/oss.py

34 lines
835 B
Python

import re
import sys
import json
def parse_setup_py(setup_py_path):
"""解析setup.py文件"""
with open(setup_py_path, "r") as f:
pass_func = lambda **x: x
try:
import distutils
distutils.core.setup = pass_func
except Exception:
pass
try:
import setuptools
setuptools.setup = pass_func
except Exception:
pass
# 获取setup参数
args = {}
code = re.sub('(?<!\w)setup\(','args=setup(',f.read())
code = code.replace('__file__','"{}"'.format(setup_py_path))
exec(code, args)
if 'args' in args:
data = args['args']
info = {}
for k in ['name','version','license','packages','install_requires','requires']:
if k in data:
info[k] = data[k]
print('oss_start<<{}>>oss_end'.format(json.dumps(info)))
if __name__ == "__main__":
if len(sys.argv) > 1:
parse_setup_py(sys.argv[1])