xref: /rk3399_rockchip-uboot/tools/patman/settings.py (revision 87d65558efe50bb2cc3617bafd8399695212c0e5)
10d24de9dSSimon Glass# Copyright (c) 2011 The Chromium OS Authors.
20d24de9dSSimon Glass#
30d24de9dSSimon Glass# See file CREDITS for list of people who contributed to this
40d24de9dSSimon Glass# project.
50d24de9dSSimon Glass#
60d24de9dSSimon Glass# This program is free software; you can redistribute it and/or
70d24de9dSSimon Glass# modify it under the terms of the GNU General Public License as
80d24de9dSSimon Glass# published by the Free Software Foundation; either version 2 of
90d24de9dSSimon Glass# the License, or (at your option) any later version.
100d24de9dSSimon Glass#
110d24de9dSSimon Glass# This program is distributed in the hope that it will be useful,
120d24de9dSSimon Glass# but WITHOUT ANY WARRANTY; without even the implied warranty of
130d24de9dSSimon Glass# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
140d24de9dSSimon Glass# GNU General Public License for more details.
150d24de9dSSimon Glass#
160d24de9dSSimon Glass# You should have received a copy of the GNU General Public License
170d24de9dSSimon Glass# along with this program; if not, write to the Free Software
180d24de9dSSimon Glass# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
190d24de9dSSimon Glass# MA 02111-1307 USA
200d24de9dSSimon Glass#
210d24de9dSSimon Glass
220d24de9dSSimon Glassimport ConfigParser
230d24de9dSSimon Glassimport os
240d24de9dSSimon Glassimport re
250d24de9dSSimon Glass
260d24de9dSSimon Glassimport command
27*87d65558SVikram Narayananimport gitutil
280d24de9dSSimon Glass
290d24de9dSSimon Glassdef ReadGitAliases(fname):
300d24de9dSSimon Glass    """Read a git alias file. This is in the form used by git:
310d24de9dSSimon Glass
320d24de9dSSimon Glass    alias uboot  u-boot@lists.denx.de
330d24de9dSSimon Glass    alias wd     Wolfgang Denk <wd@denx.de>
340d24de9dSSimon Glass
350d24de9dSSimon Glass    Args:
360d24de9dSSimon Glass        fname: Filename to read
370d24de9dSSimon Glass    """
380d24de9dSSimon Glass    try:
390d24de9dSSimon Glass        fd = open(fname, 'r')
400d24de9dSSimon Glass    except IOError:
410d24de9dSSimon Glass        print "Warning: Cannot find alias file '%s'" % fname
420d24de9dSSimon Glass        return
430d24de9dSSimon Glass
440d24de9dSSimon Glass    re_line = re.compile('alias\s+(\S+)\s+(.*)')
450d24de9dSSimon Glass    for line in fd.readlines():
460d24de9dSSimon Glass        line = line.strip()
470d24de9dSSimon Glass        if not line or line[0] == '#':
480d24de9dSSimon Glass            continue
490d24de9dSSimon Glass
500d24de9dSSimon Glass        m = re_line.match(line)
510d24de9dSSimon Glass        if not m:
520d24de9dSSimon Glass            print "Warning: Alias file line '%s' not understood" % line
530d24de9dSSimon Glass            continue
540d24de9dSSimon Glass
550d24de9dSSimon Glass        list = alias.get(m.group(1), [])
560d24de9dSSimon Glass        for item in m.group(2).split(','):
570d24de9dSSimon Glass            item = item.strip()
580d24de9dSSimon Glass            if item:
590d24de9dSSimon Glass                list.append(item)
600d24de9dSSimon Glass        alias[m.group(1)] = list
610d24de9dSSimon Glass
620d24de9dSSimon Glass    fd.close()
630d24de9dSSimon Glass
64*87d65558SVikram Narayanandef CreatePatmanConfigFile(config_fname):
65*87d65558SVikram Narayanan    """Creates a config file under $(HOME)/.patman if it can't find one.
66*87d65558SVikram Narayanan
67*87d65558SVikram Narayanan    Args:
68*87d65558SVikram Narayanan        config_fname: Default config filename i.e., $(HOME)/.patman
69*87d65558SVikram Narayanan
70*87d65558SVikram Narayanan    Returns:
71*87d65558SVikram Narayanan        None
72*87d65558SVikram Narayanan    """
73*87d65558SVikram Narayanan    name = gitutil.GetDefaultUserName()
74*87d65558SVikram Narayanan    if name == None:
75*87d65558SVikram Narayanan        name = raw_input("Enter name: ")
76*87d65558SVikram Narayanan
77*87d65558SVikram Narayanan    email = gitutil.GetDefaultUserEmail()
78*87d65558SVikram Narayanan
79*87d65558SVikram Narayanan    if email == None:
80*87d65558SVikram Narayanan        email = raw_input("Enter email: ")
81*87d65558SVikram Narayanan
82*87d65558SVikram Narayanan    try:
83*87d65558SVikram Narayanan        f = open(config_fname, 'w')
84*87d65558SVikram Narayanan    except IOError:
85*87d65558SVikram Narayanan        print "Couldn't create patman config file\n"
86*87d65558SVikram Narayanan        raise
87*87d65558SVikram Narayanan
88*87d65558SVikram Narayanan    print >>f, "[alias]\nme: %s <%s>" % (name, email)
89*87d65558SVikram Narayanan    f.close();
90*87d65558SVikram Narayanan
910d24de9dSSimon Glassdef Setup(config_fname=''):
920d24de9dSSimon Glass    """Set up the settings module by reading config files.
930d24de9dSSimon Glass
940d24de9dSSimon Glass    Args:
950d24de9dSSimon Glass        config_fname:   Config filename to read ('' for default)
960d24de9dSSimon Glass    """
970d24de9dSSimon Glass    settings = ConfigParser.SafeConfigParser()
980d24de9dSSimon Glass    if config_fname == '':
992b36c75dSVikram Narayanan        config_fname = '%s/.patman' % os.getenv('HOME')
100*87d65558SVikram Narayanan
101*87d65558SVikram Narayanan    if not os.path.exists(config_fname):
102*87d65558SVikram Narayanan        print "No config file found ~/.patman\nCreating one...\n"
103*87d65558SVikram Narayanan        CreatePatmanConfigFile(config_fname)
104*87d65558SVikram Narayanan
1050d24de9dSSimon Glass    settings.read(config_fname)
1060d24de9dSSimon Glass
1070d24de9dSSimon Glass    for name, value in settings.items('alias'):
1080d24de9dSSimon Glass        alias[name] = value.split(',')
1090d24de9dSSimon Glass
1100d24de9dSSimon Glass
1110d24de9dSSimon Glass# These are the aliases we understand, indexed by alias. Each member is a list.
1120d24de9dSSimon Glassalias = {}
113