summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/patman/README16
-rw-r--r--tools/patman/gitutil.py2
-rwxr-xr-xtools/patman/patman.py3
-rw-r--r--tools/patman/settings.py39
4 files changed, 54 insertions, 6 deletions
diff --git a/tools/patman/README b/tools/patman/README
index 16b51eb..2743da9 100644
--- a/tools/patman/README
+++ b/tools/patman/README
@@ -98,6 +98,22 @@ The checkpatch.pl in the U-Boot tools/ subdirectory will be located and
used. Failing that you can put it into your path or ~/bin/checkpatch.pl
+If you want to change the defaults for patman's command-line arguments,
+you can add a [settings] section to your .patman file. This can be used
+for any command line option by referring to the "dest" for the option in
+patman.py. For reference, the useful ones (at the moment) shown below
+(all with the non-default setting):
+
+>>>
+
+[settings]
+ignore_errors: True
+process_tags: False
+verbose: True
+
+<<<
+
+
How to run it
=============
diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 41a74a5..ca3ba4a 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -384,8 +384,6 @@ def GetDefaultUserEmail():
def Setup():
"""Set up git utils, by reading the alias files."""
- settings.Setup('')
-
# Check for a git alias file also
alias_fname = GetAliasFile()
if alias_fname:
diff --git a/tools/patman/patman.py b/tools/patman/patman.py
index 4181d80..b327c67 100755
--- a/tools/patman/patman.py
+++ b/tools/patman/patman.py
@@ -34,6 +34,7 @@ import checkpatch
import command
import gitutil
import patchstream
+import settings
import terminal
import test
@@ -64,6 +65,8 @@ parser.usage = """patman [options]
Create patches from commits in a branch, check them and email them as
specified by tags you place in the commits. Use -n to """
+
+settings.Setup(parser, '')
(options, args) = parser.parse_args()
# Run our meagre tests
diff --git a/tools/patman/settings.py b/tools/patman/settings.py
index 4dda17b..5208f7d 100644
--- a/tools/patman/settings.py
+++ b/tools/patman/settings.py
@@ -88,13 +88,43 @@ def CreatePatmanConfigFile(config_fname):
print >>f, "[alias]\nme: %s <%s>" % (name, email)
f.close();
-def Setup(config_fname=''):
+def _UpdateDefaults(parser, config):
+ """Update the given OptionParser defaults based on config.
+
+ We'll walk through all of the settings from the parser
+ For each setting we'll look for a default in the option parser.
+ If it's found we'll update the option parser default.
+
+ The idea here is that the .patman file should be able to update
+ defaults but that command line flags should still have the final
+ say.
+
+ Args:
+ parser: An instance of an OptionParser whose defaults will be
+ updated.
+ config: An instance of SafeConfigParser that we will query
+ for settings.
+ """
+ defaults = parser.get_default_values()
+ for name, val in config.items('settings'):
+ if hasattr(defaults, name):
+ default_val = getattr(defaults, name)
+ if isinstance(default_val, bool):
+ val = config.getboolean('settings', name)
+ elif isinstance(default_val, int):
+ val = config.getint('settings', name)
+ parser.set_default(name, val)
+ else:
+ print "WARNING: Unknown setting %s" % name
+
+def Setup(parser, config_fname=''):
"""Set up the settings module by reading config files.
Args:
+ parser: The parser to update
config_fname: Config filename to read ('' for default)
"""
- settings = ConfigParser.SafeConfigParser()
+ config = ConfigParser.SafeConfigParser()
if config_fname == '':
config_fname = '%s/.patman' % os.getenv('HOME')
@@ -102,11 +132,12 @@ def Setup(config_fname=''):
print "No config file found ~/.patman\nCreating one...\n"
CreatePatmanConfigFile(config_fname)
- settings.read(config_fname)
+ config.read(config_fname)
- for name, value in settings.items('alias'):
+ for name, value in config.items('alias'):
alias[name] = value.split(',')
+ _UpdateDefaults(parser, config)
# These are the aliases we understand, indexed by alias. Each member is a list.
alias = {}