Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import os
  4. import argparse
  5. from pip._internal.operations import freeze
  6.  
  7. def version_comparison(v1: str,
  8. v2: str):
  9.  
  10. if v1 == v2:
  11. return 0
  12. else:
  13. v1 = v1.split('.')
  14. v2 = v2.split('.')
  15. for x in v1:
  16. for y in v2:
  17. if int(x) == int(y):
  18. continue
  19. elif int(x) < int(y):
  20. return -1
  21. else:
  22. return 1
  23.  
  24. def version_parser(lista : list):
  25. """Monta o objeto com as versões de pacotes
  26. """
  27. versions = dict( tuple(w.split('==')) for w in lista )
  28. installed = dict( tuple(val.split('==')) for val in freeze.freeze())
  29. maps = []
  30. for k in list(set(installed.keys()) & set(versions.keys())) :
  31. if version_comparison(versions[k], installed[k]) < 0:
  32. maps.append((k, versions[k]))
  33.  
  34. for k in list(set(versions.keys()) - set(installed.keys()) ):
  35. maps.append((k,None))
  36.  
  37. return maps
  38.  
  39. #aplicar a busca no mapping do versions e montar a regra de comparação enter os dicts
  40.  
  41. if __name__ == "__main__":
  42.  
  43. parser = argparse.ArgumentParser("'Get the versions of python packages within a list")
  44.  
  45. parser.add_argument('filename', metavar='file', type=str, help='the filename that contains the list')
  46.  
  47. args = parser.parse_args()
  48.  
  49. from colorama import init, Fore
  50. init(autoreset=True)
  51.  
  52. with open(args.filename, 'r', encoding='utf8') as file:
  53. lines = file.readlines()
  54. lines = [line.replace('\n','') for line in lines]
  55.  
  56. print(lines)
  57. print('Os pacotes a seguir estão atualizados:')
  58. [print( f' {Fore.GREEN} {val[0]} >= {val[1]}') for val in version_parser(lines) if val[1] ];
  59. print('Os pacotes abaixo não puderam ser encontrados:')
  60. [print(f' {Fore.RED} {val[0]}') for val in version_parser(lines) if val[1] is None ];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement