@@ -246,3 +246,33 @@ def docs():
246246
247247 invoke .run ("%s/bin/buildthedocs %s/buildthedocs.yml -o %s" %
248248 (env , docs_dir , build_dir ))
249+
250+
251+ #
252+ # Pinned dependencies management
253+ #
254+
255+
256+ @invoke .task (name = "deps-sync" )
257+ def deps_sync ():
258+ """Sync dependencies versions"""
259+ env = create_env ("tools" , requirements = True )
260+
261+ for env_name in os .listdir (os .path .join (BASE , "build" , "envs" )):
262+ req = os .path .join (BASE , "requirements-%s.txt" % env_name )
263+ if not os .path .exists (req ):
264+ continue
265+
266+ sub_env = os .path .join (BASE , "build" , "envs" , env_name )
267+ invoke .run ("VIRTUAL_ENV=%s %s/bin/pip-sync %s/requirements-%s.txt"
268+ % (sub_env , env , BASE , env_name ), pty = True )
269+
270+
271+ @invoke .task (name = "deps-compile" )
272+ def deps_compile ():
273+ """Compile new requirements-*.txt"""
274+ env = create_env ("tools" , requirements = True )
275+
276+ for file in glob .glob (os .path .join (BASE , "requirements-*.in" )):
277+ invoke .run ("%s/bin/pip-compile %s > %s" % (env , os .path .abspath (file ),
278+ os .path .abspath (file )[:- 3 ]+ ".txt" ))
0 commit comments