diff options
Diffstat (limited to 'tools/patman')
| -rw-r--r-- | tools/patman/README | 16 | ||||
| -rw-r--r-- | tools/patman/gitutil.py | 2 | ||||
| -rwxr-xr-x | tools/patman/patman.py | 3 | ||||
| -rw-r--r-- | tools/patman/settings.py | 39 | 
4 files changed, 54 insertions, 6 deletions
| diff --git a/tools/patman/README b/tools/patman/README index 16b51eb59..2743da9eb 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 41a74a55a..ca3ba4a03 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 4181d8078..b327c675f 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 4dda17bf5..5208f7df6 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 = {} |