Mercurial > nagslang
changeset 13:b410c7153d52
Option parsing
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sun, 01 Sep 2013 14:17:42 +0200 |
parents | 2318792b83c6 |
children | 17b233a54651 |
files | nagslang/constants.py nagslang/options.py |
diffstat | 2 files changed, 36 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/constants.py Sun Sep 01 14:08:42 2013 +0200 +++ b/nagslang/constants.py Sun Sep 01 14:17:42 2013 +0200 @@ -1,1 +1,6 @@ SCREEN = (800, 600) + +DEFAULTS = dict( + debug=False, + sound=True, +)
--- a/nagslang/options.py Sun Sep 01 14:08:42 2013 +0200 +++ b/nagslang/options.py Sun Sep 01 14:17:42 2013 +0200 @@ -1,3 +1,32 @@ +import optparse +import os + +from nagslang.constants import DEFAULTS + + +class AttrDict(dict): + '''A dict with attribute access''' + def __getattr__(self, attr): + return self[attr] + + +options = AttrDict() + + def parse_args(args): - #TODO - return + options.update(DEFAULTS) + + options.debug = 'DEBUG' in os.environ + + parser = optparse.OptionParser() + parser.add_option('--no-sound', + dest='sound', action='store_false', default=True, + help='Disable sound') + if options.debug: + parser.add_option('--area', help='Initial area') + + opts, _ = parser.parse_args(args) + + for k in DEFAULTS: + if getattr(opts, k, None) is not None: + options[k] = getattr(opts, k)