mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
9 years ago
|
#!/usr/bin/env python
|
||
|
|
||
|
# Este script altera os arquivos requirements/*requirements.txt
|
||
|
# atualizando as versões fixadas neles para coincidirem com as do venv.
|
||
|
#
|
||
|
# Rode esse script após atualizar as dependências do venv usando, p. ex.:
|
||
|
# pip-review
|
||
|
#
|
||
|
# Após usá-lo confira sempre o resultado com `git diff` e teste as mudanças
|
||
|
|
||
|
import glob
|
||
|
import re
|
||
|
import subprocess
|
||
|
|
||
|
freeze_output = subprocess.Popen(
|
||
|
'pip freeze', shell=True,
|
||
|
stdout=subprocess.PIPE).stdout.read().decode('ascii')
|
||
|
freeze = freeze_output.strip().split('\n')
|
||
|
freeze = {name.lower(): version
|
||
|
for name, version in [re.split('==+', s) for s in freeze]}
|
||
|
req_files = glob.glob('requirements/*requirements.txt')
|
||
|
requirements = [(f, open(f).read().strip().split('\n'))
|
||
|
for f in req_files]
|
||
|
|
||
|
|
||
|
def novas_linhas(linhas):
|
||
|
for linha in linhas:
|
||
|
split = re.split('==', linha)
|
||
|
if len(split) == 1:
|
||
|
yield split[0]
|
||
|
else:
|
||
|
nome, versao = split
|
||
|
nome = nome.lower()
|
||
|
yield '%s==%s' % (nome, freeze[nome])
|
||
|
|
||
|
for arq, linhas in requirements:
|
||
|
with open(arq, 'w') as f:
|
||
|
f.writelines(l + '\n' for l in novas_linhas(linhas))
|