mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
import os
|
|
import re
|
|
|
|
def get_requirements(file_path):
|
|
if not file_path:
|
|
return []
|
|
with open(file_path, "r") as requirements_file:
|
|
lines = requirements_file.read().splitlines()
|
|
for line_no, line in enumerate(lines):
|
|
match = re.search("^\\s*-r\\s+([^#]+)", line)
|
|
if match:
|
|
include_file_path = os.path.join(os.path.dirname(file_path), match.group(1).strip())
|
|
include_requirements = get_requirements(include_file_path)
|
|
lines[line_no:line_no+1] = include_requirements
|
|
return lines
|
|
|
|
def deduplicate(requirements):
|
|
result = []
|
|
seen = set()
|
|
for req in requirements:
|
|
if req in seen:
|
|
continue
|
|
result.append(req)
|
|
seen.add(req)
|
|
return result
|
|
|
|
def gather(requirement_files):
|
|
requirements = []
|
|
for file in requirement_files:
|
|
requirements += get_requirements(file)
|
|
requirements = deduplicate(requirements)
|
|
print("Requirements:")
|
|
for r in requirements:
|
|
print(" {}".format(r))
|
|
return requirements
|