Patchwork [U-Boot,2/2] patman: Handle creation of patman config file

login
register
mail settings
Submitter Vikram Narayanan
Date May 23, 2012, 7:01 p.m.
Message ID <4FBD33F2.8000601@gmail.com>
Download mbox | patch
Permalink /patch/161024/
State Accepted
Commit 87d65558efe50bb2cc3617bafd8399695212c0e5
Delegated to: Wolfgang Denk
Headers show

Comments

Vikram Narayanan - May 23, 2012, 7:01 p.m.
patman shouts when it couldn't find a $(HOME)/.patman file.
Handle it in a sane way by creating a new one for the user.
It looks for a user.name and user.email in the global .gitconfig
file, waits for the user input if it can't find there. Update the
same in the README

Signed-off-by: Vikram Narayanan <vikram186@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Wolfgang Denk <wd@denx.de>
---
 tools/patman/README      |    3 +++
 tools/patman/gitutil.py  |   18 ++++++++++++++++++
 tools/patman/settings.py |   37 ++++++++++++++++++++++++++++++++++---
 3 files changed, 55 insertions(+), 3 deletions(-)
Wolfgang Denk - June 19, 2012, 8:52 p.m.
Dear Vikram Narayanan,

In message <4FBD33F2.8000601@gmail.com> you wrote:
> patman shouts when it couldn't find a $(HOME)/.patman file.
> Handle it in a sane way by creating a new one for the user.
> It looks for a user.name and user.email in the global .gitconfig
> file, waits for the user input if it can't find there. Update the
> same in the README
> 
> Signed-off-by: Vikram Narayanan <vikram186@gmail.com>
> Acked-by: Simon Glass <sjg@chromium.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Wolfgang Denk <wd@denx.de>
> ---
>  tools/patman/README      |    3 +++
>  tools/patman/gitutil.py  |   18 ++++++++++++++++++
>  tools/patman/settings.py |   37 ++++++++++++++++++++++++++++++++++---
>  3 files changed, 55 insertions(+), 3 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/tools/patman/README b/tools/patman/README
index 1af8665..86ede78 100644
--- a/tools/patman/README
+++ b/tools/patman/README
@@ -68,6 +68,9 @@  How to configure it
 For most cases patman will locate and use the file 'doc/git-mailrc' in
 your U-Boot directory. This contains most of the aliases you will need.
 
+During the first run patman creates a config file for you by taking the default
+user name and email address from the global .gitconfig file.
+
 To add your own, create a file ~/.patman like this:
 
 >>>>
diff --git a/tools/patman/gitutil.py b/tools/patman/gitutil.py
index 48ca998..59eca99 100644
--- a/tools/patman/gitutil.py
+++ b/tools/patman/gitutil.py
@@ -357,6 +357,24 @@  def GetAliasFile():
         fname = os.path.join(GetTopLevel(), fname.strip())
     return fname
 
+def GetDefaultUserName():
+    """Gets the user.name from .gitconfig file.
+
+    Returns:
+        User name found in .gitconfig file, or None if none
+    """
+    uname = command.OutputOneLine('git', 'config', '--global', 'user.name')
+    return uname
+
+def GetDefaultUserEmail():
+    """Gets the user.email from the global .gitconfig file.
+
+    Returns:
+        User's email found in .gitconfig file, or None if none
+    """
+    uemail = command.OutputOneLine('git', 'config', '--global', 'user.email')
+    return uemail
+
 def Setup():
     """Set up git utils, by reading the alias files."""
     settings.Setup('')
diff --git a/tools/patman/settings.py b/tools/patman/settings.py
index f980071..4dda17b 100644
--- a/tools/patman/settings.py
+++ b/tools/patman/settings.py
@@ -24,7 +24,7 @@  import os
 import re
 
 import command
-
+import gitutil
 
 def ReadGitAliases(fname):
     """Read a git alias file. This is in the form used by git:
@@ -61,6 +61,33 @@  def ReadGitAliases(fname):
 
     fd.close()
 
+def CreatePatmanConfigFile(config_fname):
+    """Creates a config file under $(HOME)/.patman if it can't find one.
+
+    Args:
+        config_fname: Default config filename i.e., $(HOME)/.patman
+
+    Returns:
+        None
+    """
+    name = gitutil.GetDefaultUserName()
+    if name == None:
+        name = raw_input("Enter name: ")
+
+    email = gitutil.GetDefaultUserEmail()
+
+    if email == None:
+        email = raw_input("Enter email: ")
+
+    try:
+        f = open(config_fname, 'w')
+    except IOError:
+        print "Couldn't create patman config file\n"
+        raise
+
+    print >>f, "[alias]\nme: %s <%s>" % (name, email)
+    f.close();
+
 def Setup(config_fname=''):
     """Set up the settings module by reading config files.
 
@@ -70,8 +97,12 @@  def Setup(config_fname=''):
     settings = ConfigParser.SafeConfigParser()
     if config_fname == '':
         config_fname = '%s/.patman' % os.getenv('HOME')
-    if config_fname:
-        settings.read(config_fname)
+
+    if not os.path.exists(config_fname):
+        print "No config file found ~/.patman\nCreating one...\n"
+        CreatePatmanConfigFile(config_fname)
+
+    settings.read(config_fname)
 
     for name, value in settings.items('alias'):
         alias[name] = value.split(',')