diff options
author | Bryan Bishop <kanzure@gmail.com> | 2013-09-12 21:39:24 -0700 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2013-09-12 21:39:24 -0700 |
commit | 9830c9dc0a20a3fb567bc8b4ed554d3b0de043d4 (patch) | |
tree | 6a753e136986640400e3dffd04b0ff99bb1e2bce /pokemontools/configuration.py | |
parent | 0ce2555a1939ebbd97c2539e46af7d5c30480deb (diff) | |
parent | a4849db2658a14deebb6620fac50e9d8e9f8a0ad (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.py | 54 |
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) + ) |