зеркало из https://github.com/mozilla/gecko-dev.git
65 строки
1.8 KiB
Python
65 строки
1.8 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import ConfigParser
|
|
import os
|
|
import sys
|
|
from collections import OrderedDict
|
|
|
|
here = os.path.split(__file__)[0]
|
|
|
|
class ConfigDict(dict):
|
|
def __init__(self, base_path, *args, **kwargs):
|
|
self.base_path = base_path
|
|
dict.__init__(self, *args, **kwargs)
|
|
|
|
def get_path(self, key, default=None):
|
|
if key not in self:
|
|
return default
|
|
path = self[key]
|
|
os.path.expanduser(path)
|
|
return os.path.abspath(os.path.join(self.base_path, path))
|
|
|
|
def read(config_path):
|
|
config_path = os.path.abspath(config_path)
|
|
config_root = os.path.split(config_path)[0]
|
|
parser = ConfigParser.SafeConfigParser()
|
|
success = parser.read(config_path)
|
|
assert config_path in success, success
|
|
|
|
subns = {"pwd": os.path.abspath(os.path.curdir)}
|
|
|
|
rv = OrderedDict()
|
|
for section in parser.sections():
|
|
rv[section] = ConfigDict(config_root)
|
|
for key in parser.options(section):
|
|
rv[section][key] = parser.get(section, key, False, subns)
|
|
|
|
return rv
|
|
|
|
def path(argv=None):
|
|
if argv is None:
|
|
argv = []
|
|
path = None
|
|
|
|
for i, arg in enumerate(argv):
|
|
if arg == "--config":
|
|
if i + 1 < len(argv):
|
|
path = argv[i + 1]
|
|
elif arg.startswith("--config="):
|
|
path = arg.split("=", 1)[1]
|
|
if path is not None:
|
|
break
|
|
|
|
if path is None:
|
|
if os.path.exists("wptrunner.ini"):
|
|
path = os.path.abspath("wptrunner.ini")
|
|
else:
|
|
path = os.path.join(here, "..", "wptrunner.default.ini")
|
|
|
|
return os.path.abspath(path)
|
|
|
|
def load():
|
|
return read(path(sys.argv))
|