xref: /rk3399_rockchip-uboot/tools/patman/settings.py (revision 0d24de9d558209fa525f350d1320c343f241c3f5)
1*0d24de9dSSimon Glass# Copyright (c) 2011 The Chromium OS Authors.
2*0d24de9dSSimon Glass#
3*0d24de9dSSimon Glass# See file CREDITS for list of people who contributed to this
4*0d24de9dSSimon Glass# project.
5*0d24de9dSSimon Glass#
6*0d24de9dSSimon Glass# This program is free software; you can redistribute it and/or
7*0d24de9dSSimon Glass# modify it under the terms of the GNU General Public License as
8*0d24de9dSSimon Glass# published by the Free Software Foundation; either version 2 of
9*0d24de9dSSimon Glass# the License, or (at your option) any later version.
10*0d24de9dSSimon Glass#
11*0d24de9dSSimon Glass# This program is distributed in the hope that it will be useful,
12*0d24de9dSSimon Glass# but WITHOUT ANY WARRANTY; without even the implied warranty of
13*0d24de9dSSimon Glass# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*0d24de9dSSimon Glass# GNU General Public License for more details.
15*0d24de9dSSimon Glass#
16*0d24de9dSSimon Glass# You should have received a copy of the GNU General Public License
17*0d24de9dSSimon Glass# along with this program; if not, write to the Free Software
18*0d24de9dSSimon Glass# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
19*0d24de9dSSimon Glass# MA 02111-1307 USA
20*0d24de9dSSimon Glass#
21*0d24de9dSSimon Glass
22*0d24de9dSSimon Glassimport ConfigParser
23*0d24de9dSSimon Glassimport os
24*0d24de9dSSimon Glassimport re
25*0d24de9dSSimon Glass
26*0d24de9dSSimon Glassimport command
27*0d24de9dSSimon Glass
28*0d24de9dSSimon Glass
29*0d24de9dSSimon Glassdef ReadGitAliases(fname):
30*0d24de9dSSimon Glass    """Read a git alias file. This is in the form used by git:
31*0d24de9dSSimon Glass
32*0d24de9dSSimon Glass    alias uboot  u-boot@lists.denx.de
33*0d24de9dSSimon Glass    alias wd     Wolfgang Denk <wd@denx.de>
34*0d24de9dSSimon Glass
35*0d24de9dSSimon Glass    Args:
36*0d24de9dSSimon Glass        fname: Filename to read
37*0d24de9dSSimon Glass    """
38*0d24de9dSSimon Glass    try:
39*0d24de9dSSimon Glass        fd = open(fname, 'r')
40*0d24de9dSSimon Glass    except IOError:
41*0d24de9dSSimon Glass        print "Warning: Cannot find alias file '%s'" % fname
42*0d24de9dSSimon Glass        return
43*0d24de9dSSimon Glass
44*0d24de9dSSimon Glass    re_line = re.compile('alias\s+(\S+)\s+(.*)')
45*0d24de9dSSimon Glass    for line in fd.readlines():
46*0d24de9dSSimon Glass        line = line.strip()
47*0d24de9dSSimon Glass        if not line or line[0] == '#':
48*0d24de9dSSimon Glass            continue
49*0d24de9dSSimon Glass
50*0d24de9dSSimon Glass        m = re_line.match(line)
51*0d24de9dSSimon Glass        if not m:
52*0d24de9dSSimon Glass            print "Warning: Alias file line '%s' not understood" % line
53*0d24de9dSSimon Glass            continue
54*0d24de9dSSimon Glass
55*0d24de9dSSimon Glass        list = alias.get(m.group(1), [])
56*0d24de9dSSimon Glass        for item in m.group(2).split(','):
57*0d24de9dSSimon Glass            item = item.strip()
58*0d24de9dSSimon Glass            if item:
59*0d24de9dSSimon Glass                list.append(item)
60*0d24de9dSSimon Glass        alias[m.group(1)] = list
61*0d24de9dSSimon Glass
62*0d24de9dSSimon Glass    fd.close()
63*0d24de9dSSimon Glass
64*0d24de9dSSimon Glassdef Setup(config_fname=''):
65*0d24de9dSSimon Glass    """Set up the settings module by reading config files.
66*0d24de9dSSimon Glass
67*0d24de9dSSimon Glass    Args:
68*0d24de9dSSimon Glass        config_fname:   Config filename to read ('' for default)
69*0d24de9dSSimon Glass    """
70*0d24de9dSSimon Glass    settings = ConfigParser.SafeConfigParser()
71*0d24de9dSSimon Glass    if config_fname == '':
72*0d24de9dSSimon Glass        config_fname = '%s/.config/patman' % os.getenv('HOME')
73*0d24de9dSSimon Glass    if config_fname:
74*0d24de9dSSimon Glass        settings.read(config_fname)
75*0d24de9dSSimon Glass
76*0d24de9dSSimon Glass    for name, value in settings.items('alias'):
77*0d24de9dSSimon Glass        alias[name] = value.split(',')
78*0d24de9dSSimon Glass
79*0d24de9dSSimon Glass
80*0d24de9dSSimon Glass# These are the aliases we understand, indexed by alias. Each member is a list.
81*0d24de9dSSimon Glassalias = {}
82