xref: /rk3399_rockchip-uboot/tools/patman/settings.py (revision 2b36c75d7b930a860ec17f2af3321faa5811593b)
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
270d24de9dSSimon Glass
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
640d24de9dSSimon Glassdef Setup(config_fname=''):
650d24de9dSSimon Glass    """Set up the settings module by reading config files.
660d24de9dSSimon Glass
670d24de9dSSimon Glass    Args:
680d24de9dSSimon Glass        config_fname:   Config filename to read ('' for default)
690d24de9dSSimon Glass    """
700d24de9dSSimon Glass    settings = ConfigParser.SafeConfigParser()
710d24de9dSSimon Glass    if config_fname == '':
72*2b36c75dSVikram Narayanan        config_fname = '%s/.patman' % os.getenv('HOME')
730d24de9dSSimon Glass    if config_fname:
740d24de9dSSimon Glass        settings.read(config_fname)
750d24de9dSSimon Glass
760d24de9dSSimon Glass    for name, value in settings.items('alias'):
770d24de9dSSimon Glass        alias[name] = value.split(',')
780d24de9dSSimon Glass
790d24de9dSSimon Glass
800d24de9dSSimon Glass# These are the aliases we understand, indexed by alias. Each member is a list.
810d24de9dSSimon Glassalias = {}
82