Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import argparse
- import sys
- import yaml
- def merge(lockfile, yamlfile):
- """
- """
- lock_data = yaml.safe_load(lockfile)
- lock_versions_by_package_name = {
- name: details['version'] for name, details in lock_data['packages'].iteritems()
- }
- yaml_data = yaml.safe_load(yamlfile)
- yaml_versions_by_package_name = {
- name: details['version'] for name, details in yaml_data['dependencies'].iteritems() if isinstance(details, dict) and details.get('version')
- }
- for name, version in lock_versions_by_package_name.iteritems():
- if name not in yaml_versions_by_package_name:
- continue
- previous_version = yaml_versions_by_package_name[name]
- yaml_versions_by_package_name[name] = '^{} # was {}'.format(version, previous_version)
- return yaml_versions_by_package_name
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(
- description='Copy version numbers from pubspec.lock to pubspec.yaml.')
- parser.add_argument('yaml', type=argparse.FileType('r'),
- help='path to pubspec.yaml file')
- parser.add_argument('lock', type=argparse.FileType('r'),
- help='path to pubspec.lock file')
- parser.add_argument('--out', '-o', default=sys.stdout, type=argparse.FileType('w'),
- help='file where the merged output should go')
- args = parser.parse_args()
- args.out.write(merge(args.yaml, args.lock))
Add Comment
Please, Sign In to add comment