updated config logic to read from one file
This commit is contained in:
@@ -3,15 +3,16 @@
|
||||
|
||||
import tomllib
|
||||
import json
|
||||
import toml
|
||||
from pathlib import Path
|
||||
from platformdirs import user_config_dir
|
||||
from platformdirs import user_data_dir
|
||||
# Parse config file
|
||||
|
||||
|
||||
class ConfigManager:
|
||||
# CONFIG_DIR = Path(user_config_dir("ctf")) #config directory is $XDG_CONFIG_HOME/ctf/
|
||||
CONFIG_DIR = Path(user_config_dir("ctf")) #config directory is $XDG_CONFIG_HOME/ctf/
|
||||
def set_defaults(self, key = "all"):
|
||||
# set all default options for the config
|
||||
if key == "data_dir" or key == "all" : self.data_dir = Path("user_data_dir/ctf")
|
||||
|
||||
def __init__(self, file_path = "user_config_dir/ctf.json"):
|
||||
@@ -33,19 +34,19 @@ class ConfigManager:
|
||||
return f"ConfigManager({self.__dict__})"
|
||||
|
||||
class StateManager:
|
||||
_state_file : Path
|
||||
_path : Path
|
||||
_data: dict
|
||||
def __init__(self, data_dir: Path):
|
||||
# DATA_DIR = Path(user_data_dir("ctf")) #config directory is $XDG_CONFIG_HOME/ctf/
|
||||
data_dir.mkdir(parents = True, exist_ok = True)
|
||||
|
||||
object.__setattr__(self, "_state_file", data_dir / "state.json") # set self._path to data_dir safely
|
||||
object.__setattr__(self, "_path", "user_config_dir/config.json") # set self._path to data_dir safely
|
||||
object.__setattr__(self, "_data", self._load()) # load objects into self
|
||||
|
||||
def _load(self):
|
||||
if self._state_file.exists():
|
||||
with open(self._state_file, "r") as f:
|
||||
return json.load(f)
|
||||
if self._path.exists():
|
||||
with open(self._path, "r") as f:
|
||||
return toml.load(f)
|
||||
return{}
|
||||
|
||||
def __getattr__(self, name):
|
||||
@@ -56,7 +57,7 @@ class StateManager:
|
||||
# use state.challenge = "run" to set challenge and run to dictionary
|
||||
# writes the whole dict to disk
|
||||
self._data[name] = value
|
||||
with open(self._state_file, "w",) as f:
|
||||
with open(self._path, "w",) as f:
|
||||
json.dump(self._data, f, indent=4)
|
||||
def __repr__(self):
|
||||
return f"StateManager({self.__dict__})"
|
||||
|
||||
Reference in New Issue
Block a user