def yield_revisions(conduit, args): revision_list = phlcon_differential.query(conduit, args.ids) use_cache = not bool(args.ids) history = {} if use_cache: cache_filename = '.linteratecache' if os.path.isfile(cache_filename): with open(cache_filename) as cache_file: history = json.load(cache_file) # filter out revisions with nothing new # be careful to convert revision.id to string or it won't match history revision_list = filter( lambda x: set(history.get(x.phid, [])) != set(x.diffs), revision_list) for revision in revision_list: diff = phlcon_differential.get_revision_diff(conduit, revision.id) with phlsys_fs.chtmpdir_context() as temp_dir: try: phlcon_differential.write_diff_files(diff, temp_dir) except phlcon_differential.WriteDiffError as e: if not args.silent: print('skipping revision ', revision.id, ':', e) else: yield revision history[revision.phid] = revision.diffs if use_cache: with open(cache_filename, 'w') as cache_file: json.dump(history, cache_file)
def process(args): conduit = phlsys_makeconduit.make_conduit(args.uri, args.user, args.cert, args.act_as_user) if args.revision: result = phlcon_differential.get_revision_diff(conduit, args.revision) else: assert args.diff result = phlcon_differential.get_diff(conduit, args.diff) if args.format_python: pprint.pprint(result) elif args.format_json: print(json.dumps(result, sort_keys=True, indent=2)) elif args.format_unified: print(unified_diff(result)) elif args.format_files: phlcon_differential.write_diff_files(result, args.format_files) elif args.format_strings: fmt = args.format_strings[0] fmt_change = args.format_strings[1] if fmt: print(fmt.format(**result)) if fmt_change: for change in result["changes"]: print(fmt_change.format(**change)) else: # args.list_files: paths = set() for change in result.changes: paths.add(change["currentPath"]) paths.add(change["oldPath"]) for path in paths: print(path)
def process(args): conduit = phlsys_makeconduit.make_conduit(args.uri, args.user, args.cert) if args.revision: result = phlcon_differential.get_revision_diff(conduit, args.revision) else: assert args.diff result = phlcon_differential.get_diff(conduit, args.diff) if args.format_python: pprint.pprint(result) elif args.format_json: print json.dumps(result, sort_keys=True, indent=2) elif args.format_unified: print unified_diff(result) elif args.format_files: phlcon_differential.write_diff_files(result, args.format_files) elif args.format_strings: fmt = args.format_strings[0] fmt_change = args.format_strings[1] if fmt: print fmt.format(**result) if fmt_change: for change in result["changes"]: print fmt_change.format(**change) else: # args.list_files: paths = set() for change in result.changes: paths.add(change["currentPath"]) paths.add(change["oldPath"]) for path in paths: print path