Show colored explanation in git map-branches -h

Bug:

Change-Id: Ie624d20ecff2afd274043620fbb2edcbcee857c6
Reviewed-on: https://chromium-review.googlesource.com/476670
Commit-Queue: anatoly techtonik <techtonik@gmail.com>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
diff --git a/git_map_branches.py b/git_map_branches.py
index b889b45..58bfb35 100755
--- a/git_map_branches.py
+++ b/git_map_branches.py
@@ -3,8 +3,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-"""Provides a short mapping of all the branches in your local repo, organized
-by their upstream ('tracking branch') layout.
+"""Print dependency tree of branches in local repo.
 
 Example:
 origin/master
@@ -278,6 +277,19 @@
       self.__append_branch(child, depth=depth + 1)
 
 
+def print_desc():
+  for line in __doc__.splitlines():
+    starpos = line.find('* ')
+    if starpos == -1 or '-' not in line:
+      print(line)
+    else:
+      _, color, rest = line.split(None, 2)
+      outline = line[:starpos+1]
+      outline += getattr(Fore, color.upper()) + " " + color + " " + Fore.RESET
+      outline += rest
+      print(outline)
+  print('')
+
 def main(argv):
   setup_color.init()
   if get_git_version() < MIN_UPSTREAM_TRACK_GIT_VERSION:
@@ -287,8 +299,10 @@
         '.'.join(str(x) for x in MIN_UPSTREAM_TRACK_GIT_VERSION) +
         '. Please consider upgrading.')
 
-  parser = argparse.ArgumentParser(
-      description='Print a a tree of all branches parented by their upstreams')
+  if '-h' in argv:
+    print_desc()
+
+  parser = argparse.ArgumentParser()
   parser.add_argument('-v', action='count',
                       help='Display branch hash and Rietveld URL')
   parser.add_argument('--no-color', action='store_true', dest='nocolor',