diff options
Diffstat (limited to 'rtemstoolkit/configuration.py')
-rw-r--r-- | rtemstoolkit/configuration.py | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/rtemstoolkit/configuration.py b/rtemstoolkit/configuration.py index 71ab3ca..a03b4cc 100644 --- a/rtemstoolkit/configuration.py +++ b/rtemstoolkit/configuration.py @@ -36,6 +36,7 @@ from __future__ import print_function import os import re +import yaml try: import configparser @@ -52,6 +53,23 @@ class configuration: self.ini = None self.macro_filter = re.compile('\$\{.+\}') + def __str__(self): + if self.ini is None: + return 'empty' + s = ['Base: %s' % (self.ini['base'])] + s += ['Files:'] + for f in self.ini['files']: + s += [' %s' % (f)] + s += ['Defaults:'] + for default in self.config.defaults(): + s += ' ' + default + s += ['Sections:'] + for section in self.config.sections(): + s += [' [%s]' % (section)] + for option in self.config.options(section): + s += [' %s = %s' % (option, self.config.get(section, option))] + return os.linesep.join(s) + def get_item(self, section, label, err = True): try: rec = self.config.get(section, label).replace(os.linesep, ' ') @@ -78,10 +96,14 @@ class configuration: pass return rec - def get_items(self, section, err = True): + def get_items(self, section, err = True, flatten = True): try: - items = [(name, key.replace(os.linesep, ' ')) \ - for name, key in self.config.items(section)] + items = [] + for name, key in self.config.items(section): + if flatten: + items += [(name, key.replace(os.linesep, ' '))] + else: + items += [(name, key)] return items except: if err: @@ -102,6 +124,9 @@ class configuration: raise error.general('config: section "%s" not found' % (section)) return [] + def has_section(self, section): + return self.config.has_section(section) + def load(self, name): # # Load all the files. @@ -132,6 +157,5 @@ class configuration: for section in self.config.sections(): includes += self.comma_list(section, 'include', err = False) - def files(self): return self.ini['files'] |