Improved configuration
This commit is contained in:
parent
01ef965180
commit
6452226b50
@ -134,7 +134,7 @@ class Configuration(ConfigurationABC):
|
|||||||
|
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
def add_json_file(self, name: str, optional: bool = None):
|
def add_json_file(self, name: str, optional: bool = None, output: bool = False):
|
||||||
if self._hosting_environment.content_root_path.endswith('/') and not name.startswith('/'):
|
if self._hosting_environment.content_root_path.endswith('/') and not name.startswith('/'):
|
||||||
file_path = f'{self._hosting_environment.content_root_path}{name}'
|
file_path = f'{self._hosting_environment.content_root_path}{name}'
|
||||||
else:
|
else:
|
||||||
@ -142,13 +142,17 @@ class Configuration(ConfigurationABC):
|
|||||||
|
|
||||||
if not os.path.isfile(file_path):
|
if not os.path.isfile(file_path):
|
||||||
if not optional:
|
if not optional:
|
||||||
self._print_error(__name__, f'File not found: {file_path}')
|
if output:
|
||||||
|
self._print_error(__name__, f'File not found: {file_path}')
|
||||||
|
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
self._print_warn(__name__, f'Not Loaded config file: {file_path}')
|
if output:
|
||||||
|
self._print_warn(__name__, f'Not Loaded config file: {file_path}')
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
config_from_file = self._load_json_file(file_path)
|
config_from_file = self._load_json_file(file_path, output)
|
||||||
for sub in ConfigurationModelABC.__subclasses__():
|
for sub in ConfigurationModelABC.__subclasses__():
|
||||||
for key, value in config_from_file.items():
|
for key, value in config_from_file.items():
|
||||||
if sub.__name__ == key:
|
if sub.__name__ == key:
|
||||||
@ -156,13 +160,15 @@ class Configuration(ConfigurationABC):
|
|||||||
configuration.from_dict(value)
|
configuration.from_dict(value)
|
||||||
self.add_configuration(sub, configuration)
|
self.add_configuration(sub, configuration)
|
||||||
|
|
||||||
def _load_json_file(self, file: str) -> dict:
|
def _load_json_file(self, file: str, output: bool) -> dict:
|
||||||
try:
|
try:
|
||||||
# open config file, create if not exists
|
# open config file, create if not exists
|
||||||
with open(file, encoding='utf-8') as cfg:
|
with open(file, encoding='utf-8') as cfg:
|
||||||
# load json
|
# load json
|
||||||
json_cfg = json.load(cfg)
|
json_cfg = json.load(cfg)
|
||||||
self._print_info(__name__, f'Loaded config file: {file}')
|
if output:
|
||||||
|
self._print_info(__name__, f'Loaded config file: {file}')
|
||||||
|
|
||||||
return json_cfg
|
return json_cfg
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._print_error(__name__, f'Cannot load config file: {file}! -> {e}')
|
self._print_error(__name__, f'Cannot load config file: {file}! -> {e}')
|
||||||
|
@ -37,7 +37,7 @@ class ConfigurationABC(ABC):
|
|||||||
def add_console_arguments(self): pass
|
def add_console_arguments(self): pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def add_json_file(self, name: str, optional: bool = None): pass
|
def add_json_file(self, name: str, optional: bool = None, output: bool = False): pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def add_configuration(self, key_type: type, value: object): pass
|
def add_configuration(self, key_type: type, value: object): pass
|
||||||
|
Loading…
Reference in New Issue
Block a user