56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
import json
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from configparser import *
|
|
import typing
|
|
|
|
|
|
class Config(object):
|
|
|
|
_CONFIG_FILE: typing.Optional[str] = None
|
|
_CONFIG: typing.Optional[dict] = None
|
|
|
|
def __init__(self, config_file=None):
|
|
if config_file is None:
|
|
config_file = "config.json"
|
|
|
|
# Check that specified config file exists
|
|
if not os.path.exists(config_file):
|
|
Path(config_file).touch()
|
|
with open(config_file, 'w') as configfile:
|
|
json.dump({"session": []}, configfile)
|
|
|
|
Config._CONFIG_FILE = config_file
|
|
|
|
with open(config_file, 'r') as f:
|
|
Config._CONFIG = json.load(f)
|
|
|
|
@staticmethod
|
|
def save():
|
|
with open(Config._CONFIG_FILE, 'w') as configfile:
|
|
json.dump(Config._CONFIG, configfile)
|
|
|
|
@staticmethod
|
|
def get_config_file() -> str:
|
|
return Config._CONFIG_FILE
|
|
|
|
@staticmethod
|
|
def get_required_env_var(env_var: str) -> str:
|
|
if env_var not in os.environ:
|
|
raise Exception(f"Please set the {env_var} environment variable")
|
|
return os.environ[env_var]
|
|
|
|
@staticmethod
|
|
def get_required_config_var(config_var: str) -> str:
|
|
assert Config._CONFIG
|
|
if config_var not in Config._CONFIG:
|
|
raise Exception(f"Please set the {config_var} variable in the config file {Config._CONFIG_FILE}")
|
|
return Config._CONFIG[config_var]
|
|
|
|
@staticmethod
|
|
def set_config_var(name, value):
|
|
assert Config._CONFIG
|
|
Config._CONFIG[name] = value
|
|
return Config
|