summaryrefslogtreecommitdiffstats
path: root/layman/config.py
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2012-10-14 18:03:27 -0700
committerBrian Dolbec <dolsen@gentoo.org>2012-10-14 19:21:23 -0700
commit92a545dc6b64bbebfa9bc4c3788f1ae3db058788 (patch)
tree28ad00e9d3cc9668340b220e7dd8ab06af1ad982 /layman/config.py
parente13bca9defe7d7dce41757cf414c4ad8ac5a7e8c (diff)
downloadlayman-92a545dc6b64bbebfa9bc4c3788f1ae3db058788.tar.gz
layman-92a545dc6b64bbebfa9bc4c3788f1ae3db058788.tar.bz2
layman-92a545dc6b64bbebfa9bc4c3788f1ae3db058788.zip
Add checking for ROOT in the environment on statup, and setting it in the appropriate paths.
Add warnings for not finding the config file and installed db. Fix updaters config file path
Diffstat (limited to 'layman/config.py')
-rw-r--r--layman/config.py46
1 files changed, 27 insertions, 19 deletions
diff --git a/layman/config.py b/layman/config.py
index 56cb6f3..3c57497 100644
--- a/layman/config.py
+++ b/layman/config.py
@@ -31,9 +31,9 @@ import os
import ConfigParser
from layman.output import Message
+from layman.utils import path
-
-def read_layman_config(config=None, defaults=None):
+def read_layman_config(config=None, defaults=None, output=None):
"""reads the config file defined in defaults['config']
and updates the config
@@ -41,7 +41,10 @@ def read_layman_config(config=None, defaults=None):
@param defaults: dict
@modifies config['MAIN']['overlays']
"""
- config.read(defaults['config'])
+ read_files = config.read(defaults['config'])
+ if read_files == [] and output is not None:
+ output.warn("Warning: not able to parse config file: %s"
+ % defaults['config'])
if config.get('MAIN', 'overlay_defs'):
try:
filelist = os.listdir(config.get('MAIN', 'overlay_defs'))
@@ -70,7 +73,7 @@ class BareConfig(object):
def __init__(self, output=None, stdout=None, stdin=None, stderr=None,
config=None, read_configfile=False, quiet=False, quietness=4,
- verbose=False, nocolor=False, width=0
+ verbose=False, nocolor=False, width=0, root=None
):
'''
Creates a bare config with defaults and a few output options.
@@ -84,10 +87,15 @@ class BareConfig(object):
True
'''
+ if root is None:
+ self.root = ''
+ else:
+ self.root = root
+
self._defaults = {
- 'configdir': EPREFIX + '/etc/layman',
+ 'configdir': path([self.root, EPREFIX,'/etc/layman']),
'config' : '%(configdir)s/layman.cfg',
- 'storage' : EPREFIX + '/var/lib/layman',
+ 'storage' : path([self.root, EPREFIX,'/var/lib/layman']),
'cache' : '%(storage)s/cache',
'local_list': '%(storage)s/overlays.xml',
'installed': '%(storage)s/installed.xml',
@@ -100,15 +108,15 @@ class BareConfig(object):
'overlays' :
'http://www.gentoo.org/proj/en/overlays/repositories.xml',
'overlay_defs': '%(configdir)s/overlays',
- 'bzr_command': EPREFIX +'/usr/bin/bzr',
- 'cvs_command': EPREFIX +'/usr/bin/cvs',
- 'darcs_command': EPREFIX +'/usr/bin/darcs',
- 'git_command': EPREFIX +'/usr/bin/git',
- 'g-common_command': EPREFIX +'/usr/bin/g-common',
- 'mercurial_command': EPREFIX +'/usr/bin/hg',
- 'rsync_command': EPREFIX +'/usr/bin/rsync',
- 'svn_command': EPREFIX +'/usr/bin/svn',
- 'tar_command': EPREFIX +'/bin/tar',
+ 'bzr_command': path([self.root, EPREFIX,'/usr/bin/bzr']),
+ 'cvs_command': path([self.root, EPREFIX,'/usr/bin/cvs']),
+ 'darcs_command': path([self.root, EPREFIX,'/usr/bin/darcs']),
+ 'git_command': path([self.root, EPREFIX,'/usr/bin/git']),
+ 'g-common_command': path([self.root, EPREFIX,'/usr/bin/g-common']),
+ 'mercurial_command': path([self.root, EPREFIX,'/usr/bin/hg']),
+ 'rsync_command': path([self.root, EPREFIX,'/usr/bin/rsync']),
+ 'svn_command': path([self.root, EPREFIX,'/usr/bin/svn']),
+ 'tar_command': path([self.root, EPREFIX,'/bin/tar']),
't/f_options': ['nocheck'],
'bzr_addopts' : '',
'bzr_syncopts' : '',
@@ -158,13 +166,13 @@ class BareConfig(object):
# fix the config path
defaults['config'] = defaults['config'] \
% {'configdir': defaults['configdir']}
- self.read_config(defaults)
+ self.read_config(self.config, defaults, output=self.output)
def read_config(self, defaults):
self.config = ConfigParser.ConfigParser(defaults)
self.config.add_section('MAIN')
- read_layman_config(self.config, defaults)
+ read_layman_config(self.config, defaults, self._options['output'])
def keys(self):
@@ -256,7 +264,7 @@ class OptionConfig(BareConfig):
by using dictionaries.
"""
- def __init__(self, options=None, defaults=None):
+ def __init__(self, options=None, defaults=None, root=None):
"""
@param options: dictionary of {'option': value, ...}
@rtype OptionConfig class instance.
@@ -271,7 +279,7 @@ class OptionConfig(BareConfig):
>>> sorted(a.keys())
['bzr_addopts', 'bzr_command', 'bzr_postsync', 'bzr_syncopts', 'cache', 'config', 'configdir', 'custom_news_func', 'custom_news_pkg', 'cvs_addopts', 'cvs_command', 'cvs_postsync', 'cvs_syncopts', 'darcs_addopts', 'darcs_command', 'darcs_postsync', 'darcs_syncopts', 'g-common_command', 'g-common_generateopts', 'g-common_postsync', 'g-common_syncopts', 'git_addopts', 'git_command', 'git_email', 'git_postsync', 'git_syncopts', 'git_user', 'installed', 'local_list', 'make_conf', 'mercurial_addopts', 'mercurial_command', 'mercurial_postsync', 'mercurial_syncopts', 'news_reporter', 'nocheck', 'nocolor', 'output', 'overlay_defs', 'overlays', 'proxy', 'quiet', 'quietness', 'rsync_command', 'rsync_postsync', 'rsync_syncopts', 'stderr', 'stdin', 'stdout', 'storage', 'svn_addopts', 'svn_command', 'svn_postsync', 'svn_syncopts', 't/f_options', 'tar_command', 'tar_postsync', 'umask', 'verbose', 'width']
"""
- BareConfig.__init__(self)
+ BareConfig.__init__(self, root=root)
self.update_defaults(defaults)