annotate nagslang/options.py @ 416:bea0ea5b98df

Well, gravity.
author davidsharpe@lantea.local
date Sat, 07 Sep 2013 12:52:16 +0200
parents 004e3dd38336
children 044b53eb22df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
1 import optparse
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
2 import os
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
3
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
4 from nagslang.constants import DEFAULTS
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
5
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
6
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
7 class AttrDict(dict):
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
8 '''A dict with attribute access'''
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
9 def __getattr__(self, attr):
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
10 return self[attr]
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
11
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
12
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
13 options = AttrDict()
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
14
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
15
10
f7a0d6fd9f00 Some startup code
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
16 def parse_args(args):
14
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
17 '''
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
18 Parse arguments and store them in the options dictionary.
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
19
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
20 Note: If you add arguments, you need to add an appropriate default to the
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
21 DEFAULTS dict.
17b233a54651 Docstring
Stefano Rivera <stefano@rivera.za.net>
parents: 13
diff changeset
22 '''
13
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
23 options.update(DEFAULTS)
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
24
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
25 options.debug = 'DEBUG' in os.environ
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
26
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
27 parser = optparse.OptionParser()
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
28 parser.add_option('--no-sound',
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
29 dest='sound', action='store_false', default=True,
292
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
30 help='Disable all sound, including music')
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
31
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
32 parser.add_option('--no-music',
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
33 dest='music', action='store_false', default=True,
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
34 help='Disable music (but not sound)')
7b121ed73b95 --no-music flag.
Jeremy Thurgood <firxen@gmail.com>
parents: 14
diff changeset
35
13
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
36 if options.debug:
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
37 parser.add_option('--area', help='Initial area')
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
38
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
39 opts, _ = parser.parse_args(args)
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
40
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
41 for k in DEFAULTS:
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
42 if getattr(opts, k, None) is not None:
b410c7153d52 Option parsing
Stefano Rivera <stefano@rivera.za.net>
parents: 10
diff changeset
43 options[k] = getattr(opts, k)