Merge "add a global --color option"
diff --git a/color.py b/color.py
index 7970198..b279928 100644
--- a/color.py
+++ b/color.py
@@ -83,15 +83,38 @@
return code
+DEFAULT = None
+
+def SetDefaultColoring(state):
+ """Set coloring behavior to |state|.
+
+ This is useful for overriding config options via the command line.
+ """
+ if state is None:
+ # Leave it alone -- return quick!
+ return
+
+ global DEFAULT
+ state = state.lower()
+ if state in ('auto',):
+ DEFAULT = state
+ elif state in ('always', 'yes', 'true', True):
+ DEFAULT = 'always'
+ elif state in ('never', 'no', 'false', False):
+ DEFAULT = 'never'
+
+
class Coloring(object):
def __init__(self, config, section_type):
self._section = 'color.%s' % section_type
self._config = config
self._out = sys.stdout
- on = self._config.GetString(self._section)
+ on = DEFAULT
if on is None:
- on = self._config.GetString('color.ui')
+ on = self._config.GetString(self._section)
+ if on is None:
+ on = self._config.GetString('color.ui')
if on == 'auto':
if pager.active or os.isatty(1):
diff --git a/main.py b/main.py
index 72fb39b..47f083d 100755
--- a/main.py
+++ b/main.py
@@ -36,6 +36,7 @@
except ImportError:
kerberos = None
+from color import SetDefaultColoring
from trace import SetTrace
from git_command import git, GitCommand
from git_config import init_ssh, close_ssh
@@ -69,6 +70,9 @@
global_options.add_option('--no-pager',
dest='no_pager', action='store_true',
help='disable the pager')
+global_options.add_option('--color',
+ choices=('auto', 'always', 'never'), default=None,
+ help='control color usage: auto, always, never')
global_options.add_option('--trace',
dest='trace', action='store_true',
help='trace git command execution')
@@ -113,6 +117,8 @@
print('fatal: invalid usage of --version', file=sys.stderr)
return 1
+ SetDefaultColoring(gopts.color)
+
try:
cmd = self.commands[name]
except KeyError: