Assorted project boilerplate.
[naja.git] / naja / options.py
1 import optparse
2 import os
3
4 from naja.constants import DEFAULTS
5
6
7 class AttrDict(dict):
8     '''A dict with attribute access'''
9     def __getattr__(self, attr):
10         return self[attr]
11
12
13 options = AttrDict()
14
15
16 def parse_args(args):
17     '''
18     Parse arguments and store them in the options dictionary.
19
20     Note: If you add arguments, you need to add an appropriate default to the
21     DEFAULTS dict.
22     '''
23     options.update(DEFAULTS)
24
25     options.debug = 'DEBUG' in os.environ
26
27     parser = optparse.OptionParser()
28     parser.add_option('--no-sound',
29                       dest='sound', action='store_false', default=True,
30                       help='Disable all sound, including music')
31
32     parser.add_option('--no-music',
33                       dest='music', action='store_false', default=True,
34                       help='Disable music (but not sound)')
35
36     opts, _ = parser.parse_args(args)
37
38     for k in DEFAULTS:
39         if getattr(opts, k, None) is not None:
40             options[k] = getattr(opts, k)