mirror of
https://github.com/pret/poketcg.git
synced 2026-04-18 02:56:34 -05:00
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
"""
|
|
Configuration
|
|
"""
|
|
|
|
import os
|
|
|
|
class ConfigException(Exception):
|
|
"""
|
|
Configuration error. Maybe a missing config variable.
|
|
"""
|
|
|
|
class Config(object):
|
|
"""
|
|
The Config class handles all configuration for pokemontools. Other classes
|
|
and functions use a Config object to determine where expected files can be
|
|
located.
|
|
"""
|
|
|
|
def __init__(self, **kwargs):
|
|
"""
|
|
Store all parameters.
|
|
"""
|
|
self._config = {}
|
|
|
|
for (key, value) in kwargs.items():
|
|
if key not in self.__dict__:
|
|
self._config[key] = value
|
|
else:
|
|
raise ConfigException(
|
|
"Can't store \"{0}\" in configuration because the key conflicts with an existing property."
|
|
.format(key)
|
|
)
|
|
|
|
if "path" not in self._config:
|
|
self._config["path"] = os.getcwd()
|
|
|
|
# vba save states go into ./save-states/
|
|
if "save_state_path" not in self._config:
|
|
self._config["save_state_path"] = os.path.join(self._config["path"], "save-states/")
|
|
|
|
# assume rom is at ./baserom.gbc
|
|
if "rom" not in self._config:
|
|
self._config["rom_path"] = os.path.join(self._config["path"], "baserom.gbc")
|
|
|
|
def __getattr__(self, key):
|
|
"""
|
|
Grab the value from the class properties, then check the configuration,
|
|
and raise an exception if nothing works.
|
|
"""
|
|
if key in self.__dict__:
|
|
return self.__dict__[key]
|
|
elif key in self._config:
|
|
return self._config[key]
|
|
else:
|
|
raise ConfigException(
|
|
"no config found for \"{0}\"".format(key)
|
|
)
|