42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
from __future__ import annotations
|
|
import argparse
|
|
|
|
from typing import Optional
|
|
|
|
from .misc import CrashGenError
|
|
|
|
# from crash_gen.misc import CrashGenError
|
|
|
|
# gConfig: Optional[argparse.Namespace]
|
|
|
|
class Config:
|
|
_config = None # type Optional[argparse.Namespace]
|
|
|
|
@classmethod
|
|
def init(cls, parser: argparse.ArgumentParser):
|
|
if cls._config is not None:
|
|
raise CrashGenError("Config can only be initialized once")
|
|
cls._config = parser.parse_args()
|
|
# print(cls._config)
|
|
|
|
@classmethod
|
|
def setConfig(cls, config: argparse.Namespace):
|
|
cls._config = config
|
|
|
|
@classmethod
|
|
# TODO: check items instead of exposing everything
|
|
def getConfig(cls) -> argparse.Namespace:
|
|
if cls._config is None:
|
|
raise CrashGenError("invalid state")
|
|
return cls._config
|
|
|
|
@classmethod
|
|
def clearConfig(cls):
|
|
cls._config = None
|
|
|
|
@classmethod
|
|
def isSet(cls, cfgKey):
|
|
cfg = cls.getConfig()
|
|
if cfgKey not in cfg:
|
|
return False
|
|
return cfg.__getattribute__(cfgKey) |