xref: /rk3399_rockchip-uboot/tools/buildman/bsettings.py (revision 827e37b55869933951e7e7db3693d4df001fd609)
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