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