Colorize the current branch in 'git cl status'
Change-Id: I5cdb484ae4b6829aeeb83924fb464939cdb4298b
Reviewed-on: https://chromium-review.googlesource.com/c/1464776
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
Commit-Queue: Daniel McArdle <dmcardle@chromium.org>
diff --git a/git_cl.py b/git_cl.py
index 549aae2..c49d658 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -3624,7 +3624,6 @@
return RunGit(['config', 'branch.%s.base-url' % branch, args[0]],
error_ok=False).strip()
-
def color_for_status(status):
"""Maps a Changelist status to color, for CMDstatus and other tools."""
return {
@@ -3944,8 +3943,27 @@
fine_grained=not options.fast,
max_processes=options.maxjobs)
+ current_branch = GetCurrentBranch()
+
+ def FormatBranchName(branch, colorize=False):
+ """Simulates 'git branch' behavior. Colorizes and prefixes branch name with
+ an asterisk when it is the current branch."""
+
+ asterisk = ""
+ color = Fore.RESET
+ if branch == current_branch:
+ asterisk = "* "
+ color = Fore.GREEN
+ branch_name = ShortBranchName(branch)
+
+ if colorize:
+ return asterisk + color + branch_name + Fore.RESET
+ else:
+ return branch_name
+
branch_statuses = {}
- alignment = max(5, max(len(ShortBranchName(c.GetBranch())) for c in changes))
+
+ alignment = max(5, max(len(FormatBranchName(c.GetBranch())) for c in changes))
for cl in sorted(changes, key=lambda c: c.GetBranch()):
branch = cl.GetBranch()
while branch not in branch_statuses:
@@ -3964,15 +3982,14 @@
reset = ''
status_str = '(%s)' % status if status else ''
print(' %*s : %s%s %s%s' % (
- alignment, ShortBranchName(branch), color, url,
+ alignment, FormatBranchName(branch, colorize=True), color, url,
status_str, reset))
- branch = GetCurrentBranch()
print()
- print('Current branch: %s' % branch)
+ print('Current branch: %s' % current_branch)
for cl in changes:
- if cl.GetBranch() == branch:
+ if cl.GetBranch() == current_branch:
break
if not cl.GetIssue():
print('No issue assigned.')