From ea2e330e43c182dc16b0111ebc69ee5a71ee4ce1 Mon Sep 17 00:00:00 2001 From: Gavin Mak Date: Sat, 11 Mar 2023 06:46:20 +0000 Subject: Format codebase with black and check formatting in CQ Apply rules set by https://gerrit-review.googlesource.com/c/git-repo/+/362954/ across the codebase and fix any lingering errors caught by flake8. Also check black formatting in run_tests (and CQ). Bug: b/267675342 Change-Id: I972d77649dac351150dcfeb1cd1ad0ea2efc1956 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/363474 Reviewed-by: Mike Frysinger Tested-by: Gavin Mak Commit-Queue: Gavin Mak --- subcmds/diffmanifests.py | 374 +++++++++++++++++++++++++++-------------------- 1 file changed, 212 insertions(+), 162 deletions(-) (limited to 'subcmds/diffmanifests.py') diff --git a/subcmds/diffmanifests.py b/subcmds/diffmanifests.py index 4f9f5b0f..b446dbd8 100644 --- a/subcmds/diffmanifests.py +++ b/subcmds/diffmanifests.py @@ -18,24 +18,24 @@ from manifest_xml import RepoClient class _Coloring(Coloring): - def __init__(self, config): - Coloring.__init__(self, config, "status") + def __init__(self, config): + Coloring.__init__(self, config, "status") class Diffmanifests(PagedCommand): - """ A command to see logs in projects represented by manifests + """A command to see logs in projects represented by manifests - This is used to see deeper differences between manifests. Where a simple - diff would only show a diff of sha1s for example, this command will display - the logs of the project between both sha1s, allowing user to see diff at a - deeper level. - """ + This is used to see deeper differences between manifests. Where a simple + diff would only show a diff of sha1s for example, this command will display + the logs of the project between both sha1s, allowing user to see diff at a + deeper level. + """ - COMMON = True - helpSummary = "Manifest diff utility" - helpUsage = """%prog manifest1.xml [manifest2.xml] [options]""" + COMMON = True + helpSummary = "Manifest diff utility" + helpUsage = """%prog manifest1.xml [manifest2.xml] [options]""" - helpDescription = """ + helpDescription = """ The %prog command shows differences between project revisions of manifest1 and manifest2. if manifest2 is not specified, current manifest.xml will be used instead. Both absolute and relative paths may be used for manifests. Relative @@ -65,159 +65,209 @@ synced and their revisions won't be found. """ - def _Options(self, p): - p.add_option('--raw', - dest='raw', action='store_true', - help='display raw diff') - p.add_option('--no-color', - dest='color', action='store_false', default=True, - help='does not display the diff in color') - p.add_option('--pretty-format', - dest='pretty_format', action='store', - metavar='', - help='print the log using a custom git pretty format string') - - def _printRawDiff(self, diff, pretty_format=None, local=False): - _RelPath = lambda p: p.RelPath(local=local) - for project in diff['added']: - self.printText("A %s %s" % (_RelPath(project), project.revisionExpr)) - self.out.nl() - - for project in diff['removed']: - self.printText("R %s %s" % (_RelPath(project), project.revisionExpr)) - self.out.nl() - - for project, otherProject in diff['changed']: - self.printText("C %s %s %s" % (_RelPath(project), project.revisionExpr, - otherProject.revisionExpr)) - self.out.nl() - self._printLogs(project, otherProject, raw=True, color=False, pretty_format=pretty_format) - - for project, otherProject in diff['unreachable']: - self.printText("U %s %s %s" % (_RelPath(project), project.revisionExpr, - otherProject.revisionExpr)) - self.out.nl() - - def _printDiff(self, diff, color=True, pretty_format=None, local=False): - _RelPath = lambda p: p.RelPath(local=local) - if diff['added']: - self.out.nl() - self.printText('added projects : \n') - self.out.nl() - for project in diff['added']: - self.printProject('\t%s' % (_RelPath(project))) - self.printText(' at revision ') - self.printRevision(project.revisionExpr) - self.out.nl() - - if diff['removed']: - self.out.nl() - self.printText('removed projects : \n') - self.out.nl() - for project in diff['removed']: - self.printProject('\t%s' % (_RelPath(project))) - self.printText(' at revision ') - self.printRevision(project.revisionExpr) - self.out.nl() - - if diff['missing']: - self.out.nl() - self.printText('missing projects : \n') - self.out.nl() - for project in diff['missing']: - self.printProject('\t%s' % (_RelPath(project))) - self.printText(' at revision ') - self.printRevision(project.revisionExpr) - self.out.nl() - - if diff['changed']: - self.out.nl() - self.printText('changed projects : \n') - self.out.nl() - for project, otherProject in diff['changed']: - self.printProject('\t%s' % (_RelPath(project))) - self.printText(' changed from ') - self.printRevision(project.revisionExpr) - self.printText(' to ') - self.printRevision(otherProject.revisionExpr) - self.out.nl() - self._printLogs(project, otherProject, raw=False, color=color, - pretty_format=pretty_format) - self.out.nl() - - if diff['unreachable']: - self.out.nl() - self.printText('projects with unreachable revisions : \n') - self.out.nl() - for project, otherProject in diff['unreachable']: - self.printProject('\t%s ' % (_RelPath(project))) - self.printRevision(project.revisionExpr) - self.printText(' or ') - self.printRevision(otherProject.revisionExpr) - self.printText(' not found') - self.out.nl() - - def _printLogs(self, project, otherProject, raw=False, color=True, - pretty_format=None): - - logs = project.getAddedAndRemovedLogs(otherProject, - oneline=(pretty_format is None), - color=color, - pretty_format=pretty_format) - if logs['removed']: - removedLogs = logs['removed'].split('\n') - for log in removedLogs: - if log.strip(): - if raw: - self.printText(' R ' + log) + def _Options(self, p): + p.add_option( + "--raw", dest="raw", action="store_true", help="display raw diff" + ) + p.add_option( + "--no-color", + dest="color", + action="store_false", + default=True, + help="does not display the diff in color", + ) + p.add_option( + "--pretty-format", + dest="pretty_format", + action="store", + metavar="", + help="print the log using a custom git pretty format string", + ) + + def _printRawDiff(self, diff, pretty_format=None, local=False): + _RelPath = lambda p: p.RelPath(local=local) + for project in diff["added"]: + self.printText( + "A %s %s" % (_RelPath(project), project.revisionExpr) + ) self.out.nl() - else: - self.printRemoved('\t\t[-] ') - self.printText(log) + + for project in diff["removed"]: + self.printText( + "R %s %s" % (_RelPath(project), project.revisionExpr) + ) + self.out.nl() + + for project, otherProject in diff["changed"]: + self.printText( + "C %s %s %s" + % ( + _RelPath(project), + project.revisionExpr, + otherProject.revisionExpr, + ) + ) + self.out.nl() + self._printLogs( + project, + otherProject, + raw=True, + color=False, + pretty_format=pretty_format, + ) + + for project, otherProject in diff["unreachable"]: + self.printText( + "U %s %s %s" + % ( + _RelPath(project), + project.revisionExpr, + otherProject.revisionExpr, + ) + ) + self.out.nl() + + def _printDiff(self, diff, color=True, pretty_format=None, local=False): + _RelPath = lambda p: p.RelPath(local=local) + if diff["added"]: + self.out.nl() + self.printText("added projects : \n") self.out.nl() + for project in diff["added"]: + self.printProject("\t%s" % (_RelPath(project))) + self.printText(" at revision ") + self.printRevision(project.revisionExpr) + self.out.nl() - if logs['added']: - addedLogs = logs['added'].split('\n') - for log in addedLogs: - if log.strip(): - if raw: - self.printText(' A ' + log) + if diff["removed"]: self.out.nl() - else: - self.printAdded('\t\t[+] ') - self.printText(log) + self.printText("removed projects : \n") self.out.nl() + for project in diff["removed"]: + self.printProject("\t%s" % (_RelPath(project))) + self.printText(" at revision ") + self.printRevision(project.revisionExpr) + self.out.nl() - def ValidateOptions(self, opt, args): - if not args or len(args) > 2: - self.OptionParser.error('missing manifests to diff') - if opt.this_manifest_only is False: - raise self.OptionParser.error( - '`diffmanifest` only supports the current tree') - - def Execute(self, opt, args): - self.out = _Coloring(self.client.globalConfig) - self.printText = self.out.nofmt_printer('text') - if opt.color: - self.printProject = self.out.nofmt_printer('project', attr='bold') - self.printAdded = self.out.nofmt_printer('green', fg='green', attr='bold') - self.printRemoved = self.out.nofmt_printer('red', fg='red', attr='bold') - self.printRevision = self.out.nofmt_printer('revision', fg='yellow') - else: - self.printProject = self.printAdded = self.printRemoved = self.printRevision = self.printText - - manifest1 = RepoClient(self.repodir) - manifest1.Override(args[0], load_local_manifests=False) - if len(args) == 1: - manifest2 = self.manifest - else: - manifest2 = RepoClient(self.repodir) - manifest2.Override(args[1], load_local_manifests=False) - - diff = manifest1.projectsDiff(manifest2) - if opt.raw: - self._printRawDiff(diff, pretty_format=opt.pretty_format, - local=opt.this_manifest_only) - else: - self._printDiff(diff, color=opt.color, pretty_format=opt.pretty_format, - local=opt.this_manifest_only) + if diff["missing"]: + self.out.nl() + self.printText("missing projects : \n") + self.out.nl() + for project in diff["missing"]: + self.printProject("\t%s" % (_RelPath(project))) + self.printText(" at revision ") + self.printRevision(project.revisionExpr) + self.out.nl() + + if diff["changed"]: + self.out.nl() + self.printText("changed projects : \n") + self.out.nl() + for project, otherProject in diff["changed"]: + self.printProject("\t%s" % (_RelPath(project))) + self.printText(" changed from ") + self.printRevision(project.revisionExpr) + self.printText(" to ") + self.printRevision(otherProject.revisionExpr) + self.out.nl() + self._printLogs( + project, + otherProject, + raw=False, + color=color, + pretty_format=pretty_format, + ) + self.out.nl() + + if diff["unreachable"]: + self.out.nl() + self.printText("projects with unreachable revisions : \n") + self.out.nl() + for project, otherProject in diff["unreachable"]: + self.printProject("\t%s " % (_RelPath(project))) + self.printRevision(project.revisionExpr) + self.printText(" or ") + self.printRevision(otherProject.revisionExpr) + self.printText(" not found") + self.out.nl() + + def _printLogs( + self, project, otherProject, raw=False, color=True, pretty_format=None + ): + logs = project.getAddedAndRemovedLogs( + otherProject, + oneline=(pretty_format is None), + color=color, + pretty_format=pretty_format, + ) + if logs["removed"]: + removedLogs = logs["removed"].split("\n") + for log in removedLogs: + if log.strip(): + if raw: + self.printText(" R " + log) + self.out.nl() + else: + self.printRemoved("\t\t[-] ") + self.printText(log) + self.out.nl() + + if logs["added"]: + addedLogs = logs["added"].split("\n") + for log in addedLogs: + if log.strip(): + if raw: + self.printText(" A " + log) + self.out.nl() + else: + self.printAdded("\t\t[+] ") + self.printText(log) + self.out.nl() + + def ValidateOptions(self, opt, args): + if not args or len(args) > 2: + self.OptionParser.error("missing manifests to diff") + if opt.this_manifest_only is False: + raise self.OptionParser.error( + "`diffmanifest` only supports the current tree" + ) + + def Execute(self, opt, args): + self.out = _Coloring(self.client.globalConfig) + self.printText = self.out.nofmt_printer("text") + if opt.color: + self.printProject = self.out.nofmt_printer("project", attr="bold") + self.printAdded = self.out.nofmt_printer( + "green", fg="green", attr="bold" + ) + self.printRemoved = self.out.nofmt_printer( + "red", fg="red", attr="bold" + ) + self.printRevision = self.out.nofmt_printer("revision", fg="yellow") + else: + self.printProject = ( + self.printAdded + ) = self.printRemoved = self.printRevision = self.printText + + manifest1 = RepoClient(self.repodir) + manifest1.Override(args[0], load_local_manifests=False) + if len(args) == 1: + manifest2 = self.manifest + else: + manifest2 = RepoClient(self.repodir) + manifest2.Override(args[1], load_local_manifests=False) + + diff = manifest1.projectsDiff(manifest2) + if opt.raw: + self._printRawDiff( + diff, + pretty_format=opt.pretty_format, + local=opt.this_manifest_only, + ) + else: + self._printDiff( + diff, + color=opt.color, + pretty_format=opt.pretty_format, + local=opt.this_manifest_only, + ) -- cgit v1.2.3-54-g00ecf