Example #1
0
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 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)

    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