30
30
31
31
FIXED_REQUIREMENTS = "fixed-requirements.txt"
32
32
TEST_REQUIREMENTS = "test-requirements.txt"
33
+ MAKEFILE = "Makefile"
33
34
34
35
_LOCKFILE = "lockfiles/{resolve}.lock"
35
36
TOOL_RESOLVES = ("st2" , "bandit" , "flake8" , "pylint" , "black" )
@@ -103,14 +104,50 @@ def do_updates(path, old_reqs, reqs_updates):
103
104
path .write_text ("\n " .join (lines ) + "\n " )
104
105
105
106
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
+
106
138
def copy_locked_versions_into_legacy_requirements_files ():
107
139
fixed_path = Path (FIXED_REQUIREMENTS ).resolve ()
108
140
test_path = Path (TEST_REQUIREMENTS ).resolve ()
141
+ makefile_path = Path (MAKEFILE ).resolve ()
142
+
109
143
fixed_reqs = load_fixed_requirements (FIXED_REQUIREMENTS )
110
144
test_reqs = load_fixed_requirements (TEST_REQUIREMENTS )
145
+ makefile_reqs = load_makefile_reqs (makefile_path )
146
+ locked_in_makefile = ("pip" , "setuptools" )
111
147
112
148
fixed_reqs_updates = {}
113
149
test_reqs_updates = {}
150
+ makefile_reqs_updates = {}
114
151
115
152
LOG .info ("Looking for verion changes" )
116
153
handled = []
@@ -129,6 +166,10 @@ def copy_locked_versions_into_legacy_requirements_files():
129
166
continue
130
167
plan_update (fixed_reqs , name , version , fixed_reqs_updates )
131
168
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
+ )
132
173
handled .append (name )
133
174
134
175
if not fixed_reqs_updates :
@@ -143,6 +184,12 @@ def copy_locked_versions_into_legacy_requirements_files():
143
184
LOG .info ("Updating %s" , TEST_REQUIREMENTS )
144
185
do_updates (test_path , test_reqs , test_reqs_updates )
145
186
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
+
146
193
LOG .info ("Done updating %s and %s" , FIXED_REQUIREMENTS , TEST_REQUIREMENTS )
147
194
148
195
0 commit comments