E591 update Makefile in scripts/lockfiles_to_reqs.py · sec-js/st2@6c52aef · GitHub
[go: up one dir, main page]

Skip to content

Commit 6c52aef

Browse files
committed
update Makefile in scripts/lockfiles_to_reqs.py
1 parent 74ca6b2 commit 6c52aef

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

scripts/lockfiles_to_reqs.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
FIXED_REQUIREMENTS = "fixed-requirements.txt"
3232
TEST_REQUIREMENTS = "test-requirements.txt"
33+
MAKEFILE = "Makefile"
3334

3435
_LOCKFILE = "lockfiles/{resolve}.lock"
3536
TOOL_RESOLVES = ("st2", "bandit", "flake8", "pylint", "black")
@@ -103,14 +104,50 @@ def do_updates(path, old_reqs, reqs_updates):
103104
path.write_text("\n".join(lines) + "\n")
104105

105106

107+
def load_makefile_reqs(path):
108+
lines = path.read_text().splitlines()
109+
line_prefixes = {"pip": "PIP_VERSION ?= ", "setuptools": "SETUPTOOLS_VERSION ?= "}
110+
requirements = {"pip": None, "setuptools": None}
111+
for index, line in enumerate(lines):
112+
for name, prefix in line_prefixes.items():
113+
if line.startswith(prefix):
114+
version = line[len(prefix) :].strip()
115+
requirements[name] = (index, prefix, version)
116+
if None not in requirements.values():
117+
break
118+
return requirements
119+
120+
121+
def plan_makefile_update(old_reqs, name, version, reqs_updates):
122+
if name not in old_reqs:
123+
# this shouldn't happen
124+
return
125+
index, prefix, old_version = old_reqs[name]
126+
if old_version != version:
127+
reqs_updates[name] = (index, f"{prefix}{version}")
128+
129+
130+
def do_makefile_updates(path, reqs_updates):
131+
lines = path.read_text().splitlines()
132+
for name, info in reqs_updates.items():
133+
index, line = info
134+
lines[index] = line
135+
path.write_text("\n".join(lines) + "\n")
136+
137+
106138
def copy_locked_versions_into_legacy_requirements_files():
107139
fixed_path = Path(FIXED_REQUIREMENTS).resolve()
108140
test_path = Path(TEST_REQUIREMENTS).resolve()
141+
makefile_path = Path(MAKEFILE).resolve()
142+
109143
fixed_reqs = load_fixed_requirements(FIXED_REQUIREMENTS)
110144
test_reqs = load_fixed_requirements(TEST_REQUIREMENTS)
145+
makefile_reqs = load_makefile_reqs(makefile_path)
146+
locked_in_makefile = ("pip", "setuptools")
111147

112148
fixed_reqs_updates = {}
113149
test_reqs_updates = {}
150+
makefile_reqs_updates = {}
114151

115152
LOG.info("Looking for verion changes")
116153
handled = []
@@ -129,6 +166,10 @@ def copy_locked_versions_into_legacy_requirements_files():
129166
continue
130167
plan_update(fixed_reqs, name, version, fixed_reqs_updates)
131168
plan_update(test_reqs, name, version, test_reqs_updates)
169+
if name in locked_in_makefile:
170+
plan_makefile_update(
171+
makefile_reqs, name, version, makefile_reqs_updates
172+
)
132173
handled.append(name)
133174

134175
if not fixed_reqs_updates:
@@ -143,6 +184,12 @@ def copy_locked_versions_into_legacy_requirements_files():
143184
LOG.info("Updating %s", TEST_REQUIREMENTS)
144185
do_updates(test_path, test_reqs, test_reqs_updates)
145186

187+
if not makefile_reqs_updates:
188+
LOG.info("No updates required in %s", MAKEFILE)
189+
else:
190+
LOG.info("Updating %s", MAKEFILE)
191+
do_makefile_updates(makefile_path, makefile_reqs_updates)
192+
146193
LOG.info("Done updating %s and %s", FIXED_REQUIREMENTS, TEST_REQUIREMENTS)
147194

148195

0 commit comments

Comments
 (0)
0