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)