1fc3fe1c2SSimon Glass# Copyright (c) 2012 The Chromium OS Authors. 2fc3fe1c2SSimon Glass# 31a459660SWolfgang Denk# SPDX-License-Identifier: GPL-2.0+ 4fc3fe1c2SSimon Glass# 5fc3fe1c2SSimon Glass 6fc3fe1c2SSimon Glassimport ConfigParser 7fc3fe1c2SSimon Glassimport os 88b985eebSSimon Glassimport StringIO 9fc3fe1c2SSimon Glass 10fc3fe1c2SSimon Glass 11fc3fe1c2SSimon Glassdef Setup(fname=''): 12fc3fe1c2SSimon Glass """Set up the buildman settings module by reading config files 13fc3fe1c2SSimon Glass 14fc3fe1c2SSimon Glass Args: 15fc3fe1c2SSimon Glass config_fname: Config filename to read ('' for default) 16fc3fe1c2SSimon Glass """ 17fc3fe1c2SSimon Glass global settings 18fc3fe1c2SSimon Glass global config_fname 19fc3fe1c2SSimon Glass 20fc3fe1c2SSimon Glass settings = ConfigParser.SafeConfigParser() 218b985eebSSimon Glass if fname is not None: 22fc3fe1c2SSimon Glass config_fname = fname 23fc3fe1c2SSimon Glass if config_fname == '': 24fc3fe1c2SSimon Glass config_fname = '%s/.buildman' % os.getenv('HOME') 25fc3fe1c2SSimon Glass if config_fname: 26fc3fe1c2SSimon Glass settings.read(config_fname) 27fc3fe1c2SSimon Glass 288b985eebSSimon Glassdef AddFile(data): 298b985eebSSimon Glass settings.readfp(StringIO.StringIO(data)) 308b985eebSSimon Glass 31fc3fe1c2SSimon Glassdef GetItems(section): 32fc3fe1c2SSimon Glass """Get the items from a section of the config. 33fc3fe1c2SSimon Glass 34fc3fe1c2SSimon Glass Args: 35fc3fe1c2SSimon Glass section: name of section to retrieve 36fc3fe1c2SSimon Glass 37fc3fe1c2SSimon Glass Returns: 38fc3fe1c2SSimon Glass List of (name, value) tuples for the section 39fc3fe1c2SSimon Glass """ 40fc3fe1c2SSimon Glass try: 41fc3fe1c2SSimon Glass return settings.items(section) 42fc3fe1c2SSimon Glass except ConfigParser.NoSectionError as e: 43fc3fe1c2SSimon Glass return [] 44fc3fe1c2SSimon Glass except: 45fc3fe1c2SSimon Glass raise 46*827e37b5SSimon Glass 47*827e37b5SSimon Glassdef SetItem(section, tag, value): 48*827e37b5SSimon Glass """Set an item and write it back to the settings file""" 49*827e37b5SSimon Glass global settings 50*827e37b5SSimon Glass global config_fname 51*827e37b5SSimon Glass 52*827e37b5SSimon Glass settings.set(section, tag, value) 53*827e37b5SSimon Glass if config_fname is not None: 54*827e37b5SSimon Glass with open(config_fname, 'w') as fd: 55*827e37b5SSimon Glass settings.write(fd) 56