Guest User

Untitled

a guest
Sep 20th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import argparse
  4. import sys
  5.  
  6. import yaml
  7.  
  8.  
  9. def merge(lockfile, yamlfile):
  10. """
  11.  
  12. """
  13. lock_data = yaml.safe_load(lockfile)
  14. lock_versions_by_package_name = {
  15. name: details['version'] for name, details in lock_data['packages'].iteritems()
  16. }
  17.  
  18. yaml_data = yaml.safe_load(yamlfile)
  19. yaml_versions_by_package_name = {
  20. name: details['version'] for name, details in yaml_data['dependencies'].iteritems() if isinstance(details, dict) and details.get('version')
  21. }
  22.  
  23. for name, version in lock_versions_by_package_name.iteritems():
  24. if name not in yaml_versions_by_package_name:
  25. continue
  26. previous_version = yaml_versions_by_package_name[name]
  27. yaml_versions_by_package_name[name] = '^{} # was {}'.format(version, previous_version)
  28.  
  29. return yaml_versions_by_package_name
  30.  
  31.  
  32. if __name__ == '__main__':
  33. parser = argparse.ArgumentParser(
  34. description='Copy version numbers from pubspec.lock to pubspec.yaml.')
  35. parser.add_argument('yaml', type=argparse.FileType('r'),
  36. help='path to pubspec.yaml file')
  37. parser.add_argument('lock', type=argparse.FileType('r'),
  38. help='path to pubspec.lock file')
  39. parser.add_argument('--out', '-o', default=sys.stdout, type=argparse.FileType('w'),
  40. help='file where the merged output should go')
  41.  
  42. args = parser.parse_args()
  43. args.out.write(merge(args.yaml, args.lock))
Add Comment
Please, Sign In to add comment