You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.5 KiB
62 lines
1.5 KiB
12 years ago
|
#! /usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
#
|
||
|
# Copyright (C) 2011 Sebastian Pipping <sebastian@pipping.org>
|
||
|
# Licensed under GPL v3 or later
|
||
|
|
||
|
from __future__ import print_function
|
||
|
import sys
|
||
|
import ConfigParser
|
||
|
|
||
|
|
||
|
_KEYS = (
|
||
|
# Key, type, default
|
||
|
('CLIENT_DEBUG', bool, False), # Should go first to enable debugging as early as possible
|
||
|
('SERVER_URL', str, None),
|
||
|
('SERVER_USER', str, None),
|
||
|
('SERVER_PASSWORD', str, None),
|
||
|
)
|
||
|
|
||
|
_DEFAULTS = dict([(key, str(default))
|
||
|
for (key, _type, default)
|
||
|
in _KEYS
|
||
|
if default is not None])
|
||
|
|
||
|
|
||
|
class Settings:
|
||
|
def __init__(self):
|
||
|
pass
|
||
|
|
||
|
def load(self, filename, _additional_keys=None):
|
||
|
additional_keys = () if _additional_keys is None else _additional_keys
|
||
|
|
||
|
cp = ConfigParser.ConfigParser(_DEFAULTS)
|
||
|
if not cp.read(filename):
|
||
|
print('FATAL: Config file %s could not be parsed.' % (filename), file=sys.stderr)
|
||
|
return False
|
||
|
|
||
|
valid = True
|
||
|
for key, _type, dummy in _KEYS + additional_keys:
|
||
|
try:
|
||
|
if _type is bool:
|
||
|
value = cp.getboolean('client-barcode', key)
|
||
|
else:
|
||
|
value = cp.get('client-barcode', key)
|
||
|
except ValueError:
|
||
|
print('ERROR: Key %s in config file %s must be of type %s.' \
|
||
|
% (key, filename, _type.__name__), file=sys.stderr)
|
||
|
valid = False
|
||
|
except ConfigParser.NoOptionError:
|
||
|
print('ERROR: Config file %s misses required key %s.' \
|
||
|
% (filename, key), file=sys.stderr)
|
||
|
valid = False
|
||
|
else:
|
||
|
setattr(self, key, value)
|
||
|
if self.CLIENT_DEBUG:
|
||
|
print('DEBUG: CONFIG: %s=%s("%s")' % (key, type(value).__name__, value))
|
||
|
|
||
|
return valid
|
||
|
|
||
|
|
||
|
settings = Settings()
|