summaryrefslogtreecommitdiff
path: root/pokemontools/configuration.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2013-09-12 21:39:24 -0700
committerBryan Bishop <kanzure@gmail.com>2013-09-12 21:39:24 -0700
commit9830c9dc0a20a3fb567bc8b4ed554d3b0de043d4 (patch)
tree6a753e136986640400e3dffd04b0ff99bb1e2bce /pokemontools/configuration.py
parent0ce2555a1939ebbd97c2539e46af7d5c30480deb (diff)
parenta4849db2658a14deebb6620fac50e9d8e9f8a0ad (diff)
Merge pull request #28 from kanzure/config-cleanup
Rename config.py -> configuration.py
Diffstat (limited to 'pokemontools/configuration.py')
-rw-r--r--pokemontools/configuration.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/pokemontools/configuration.py b/pokemontools/configuration.py
new file mode 100644
index 0000000..cbf230c
--- /dev/null
+++ b/pokemontools/configuration.py
@@ -0,0 +1,54 @@
+"""
+Configuration
+"""
+
+import os
+
+import exceptions
+
+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 exceptions.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 exceptions.ConfigException(
+ "no config found for \"{0}\"".format(key)
+ )