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