Eu não tenho o pacman, mas testei isso com sua amostra de entrada fornecida, salvei em um arquivo e passei para o padrão assim:
cat versioninfo.dat | python highlight_major_versions.py
Você deve conseguir enviar a saída do seu comando pacman para o código da mesma maneira. A saída na minha máquina é assim:
Azulindicaumaatualizaçãoimportantedaversão(ouseja,primeirosegmento).Amareloindicaumaatualizaçãodeversãosecundária(2ºsegmento).Vermelhoindicainformaçõesdeversãoausentes,nestecasoporqueabibliotecaénovanestaatualização.Nãofaçonadainteligentecom-
versioning-o-
contacomopartedosegmentorelevantedelimitadoporpontos.
#!/usr/bin/env python
import fileinput
# ANSI escape codes for some colours
BLUE = '3[94m'
YELLOW = '3[93m'
RED = '3[91m'
ENDC = '3[0m'
def colourise_by_version_change(line, prev_v, new_v):
''' Colourise the input line based on major/minor version change.'''
prev_segments = prev_v.split('.')
new_segments = new_v.split('.')
coloured_line = line
if new_segments[0] > prev_segments[0]:
coloured_line = BLUE + line + ENDC
elif new_segments[1] > prev_segments[1]:
coloured_line = YELLOW + line + ENDC
return coloured_line
if __name__ == '__main__':
for line in fileinput.input():
line = line.strip()
elements = line.split()
if len(elements) == 5:
name, prev_v, new_v, size, size_unit = elements[:5]
line = colourise_by_version_change(line, prev_v, new_v)
# There's something missing, so point it out (e.g. a new version)
else:
line = RED + line + ENDC
print line