Expose data and config dir as pathlib.Path

This commit is contained in:
Florian Bruhin 2018-12-10 14:11:16 +01:00
parent 4ad5790311
commit 8806c0925e

View File

@ -24,6 +24,7 @@ import pkgutil
import types import types
import typing import typing
import sys import sys
import pathlib
import attr import attr
@ -36,7 +37,8 @@ class InitContext:
"""Context an extension gets in its init hook.""" """Context an extension gets in its init hook."""
data_dir = attr.ib() # type: str data_dir = attr.ib() # type: pathlib.Path
config_dir = attr.ib() # type: pathlib.Path
@attr.s @attr.s
@ -114,6 +116,12 @@ def _walk_pyinstaller() -> typing.Iterator[ExtensionInfo]:
yield ExtensionInfo(name=name) yield ExtensionInfo(name=name)
def _get_init_context() -> InitContext:
"""Get an InitContext object."""
return InitContext(data_dir=pathlib.Path(standarddir.data()),
config_dir=pathlib.Path(standarddir.config()))
def _load_component(info: ExtensionInfo) -> types.ModuleType: def _load_component(info: ExtensionInfo) -> types.ModuleType:
"""Load the given extension and run its init hook (if any).""" """Load the given extension and run its init hook (if any)."""
log.extensions.debug("Importing {}".format(info.name)) log.extensions.debug("Importing {}".format(info.name))
@ -123,7 +131,6 @@ def _load_component(info: ExtensionInfo) -> types.ModuleType:
if mod_info.init_hook is not None: if mod_info.init_hook is not None:
log.extensions.debug("Running init hook {!r}" log.extensions.debug("Running init hook {!r}"
.format(mod_info.init_hook.__name__)) .format(mod_info.init_hook.__name__))
context = InitContext(data_dir=standarddir.data()) mod_info.init_hook(_get_init_context())
mod_info.init_hook(context)
return mod return mod