Mercurial > hg > pyloader
annotate pyloader/factory.py @ 24:ce8fa574324d
fix syntax error
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 06 Jun 2011 07:46:47 -0700 |
parents | 9b2ca32e7a36 |
children | e547679d4bfd |
rev | line source |
---|---|
23
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
1 #!/usr/bin/env python |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
2 |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
3 """ |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
4 abstract factories |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
5 """ |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
6 |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
7 import cast |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
8 import loader |
15
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
9 import os |
22
b16d6a204ac1
stub a command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
10 import sys |
23
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
11 from optparse import OptionParser |
19
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
12 from ConfigParser import InterpolationMissingOptionError |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
13 from ConfigParser import InterpolationSyntaxError |
16
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
14 from ConfigParser import SafeConfigParser as ConfigParser |
15
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
15 |
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
16 __all__ = ['CircularReferenceError', 'PyFactory', 'IniFactory'] |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
17 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
18 class CircularReferenceError(Exception): |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
19 """factory has detected a circular reference""" |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
20 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
21 class PyFactory(object): |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
22 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
23 delimeters = ('%(', ')s') |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
24 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
25 def __init__(self, config=None, main=''): |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
26 self.main = main # main section |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
27 self.configure(config or {}) |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
28 |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
29 def configure(self, config): |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
30 """load a new configuration""" |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
31 # TODO: this should really be a configuration update. If you keep |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
32 # track of all "apps" and their parents (i.e. as a ADG) |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
33 # you should be able to update only relevent apps |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
34 self.config = config |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
35 self.seen = set() # already seen apps to note cyclic dependencies |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
36 self.parsed = {} # instantiated apps |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
37 |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
38 def load(self, name=None): |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
39 """load an object""" |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
40 |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
41 name = name or self.main # load main section by default |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
42 assert name in self.config, "'%s' not found in configuration" |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
43 if name in self.parsed: |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
44 return self.parsed[name] |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
45 if name in self.seen: |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
46 raise CircularReferenceError('Circular reference! : %s' % name) |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
47 self.seen.add(name) |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
48 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
49 # get section |
11 | 50 section = self.config[name] |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
51 assert 'path' in section |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
52 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
53 # load object |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
54 obj = loader.load(section['path']) |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
55 |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
56 # get the object's arguments (if any) |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
57 args = section.get('args', None) |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
58 kwargs = section.get('kwargs', None) |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
59 |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
60 # if args and kwargs aren't there, you're done! |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
61 if args is None and kwargs is None: |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
62 self.parsed[name] = obj |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
63 return obj |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
64 |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
65 # interpolate arguments |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
66 if args: |
11 | 67 args = [self.interpolate(arg) for arg in args] |
68 else: | |
69 args = [] | |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
70 if kwargs: |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
71 kwargs = dict([(key, self.interpolate(value)) |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
72 for key, value in kwargs.items()]) |
11 | 73 else: |
74 kwargs = {} | |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
75 |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
76 # invoke |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
77 self.parsed[name] = obj(*args, **kwargs) |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
78 return self.parsed[name] |
9
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
79 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
80 def interpolate(self, value): |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
81 |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
82 # only interpolate strings |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
83 if not isinstance(value, basestring): |
ff634cc2e62b
unfinished sketch of an abstract factory
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
84 return value |
10
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
85 |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
86 if value.startswith(self.delimeters[0]) and value.endswith(self.delimeters[1]): |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
87 value = value[len(self.delimeters[0]):-len(self.delimeters[1])] |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
88 if value in self.config: |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
89 return self.load(value) |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
90 return value |
ba2355d57998
finish baseline abstract factory implementation
Jeff Hammel <jhammel@mozilla.com>
parents:
9
diff
changeset
|
91 |
15
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
92 class IniFactory(PyFactory): |
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
93 |
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
94 def __init__(self, inifile, main=''): |
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
95 assert os.path.exists(inifile), "File not found: %s" % inifile |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
96 self.inifile = inifile |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
97 config = self.read(inifile) |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
98 PyFactory.__init__(self, config, main) |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
99 |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
100 @classmethod |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
101 def read(cls, inifile): |
15
0bea5297c156
introduce a more betterer test
Jeff Hammel <jhammel@mozilla.com>
parents:
14
diff
changeset
|
102 """reads configuration from an .ini file""" |
16
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
103 |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
104 here = os.path.dirname(os.path.abspath(inifile)) |
16
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
105 |
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
106 # read configuration |
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
107 defaults={'here': here, |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
108 'this': os.path.abspath(inifile)} |
16
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
109 parser = ConfigParser(defaults=defaults) |
edecb6fbd5a7
further stubbing of ini factory
Jeff Hammel <jhammel@mozilla.com>
parents:
15
diff
changeset
|
110 parser.optionxform = str # use whole case |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
111 parser.read(inifile) |
18 | 112 |
113 # parse configuration | |
114 config = {} | |
115 for section in parser.sections(): | |
116 | |
117 # sanity check | |
118 assert ':' in section, "No : in section: %s" % section | |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
119 |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
120 # make a dict for the section |
18 | 121 name, path = section.split(':', 1) |
122 sect = config[name] = dict(path=path) | |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
123 |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
124 # read the options |
18 | 125 for option in parser.options(section): |
19
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
126 |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
127 if option in parser.defaults(): |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
128 # don't include the defaults |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
129 continue |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
130 |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
131 # try to interpolate the option |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
132 # otherwise, use the raw value |
19
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
133 try: |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
134 value = parser.get(section, option) |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
135 except (InterpolationMissingOptionError, InterpolationSyntaxError): |
8987867698ee
a bit more stubbing of .ini parsing
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
136 value = parser.get(section, option, raw=True) |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
137 |
24 | 138 if option == '.': # positional arguments |
20
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
139 sect['args'] = cast.str2list(value) |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
140 else: |
057ccfe310b2
finish basic form of .ini factory - that was easy
Jeff Hammel <jhammel@mozilla.com>
parents:
19
diff
changeset
|
141 sect.setdefault('kwargs', {})[option] = value |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
142 |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
143 return config |
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
144 |
22
b16d6a204ac1
stub a command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
145 def main(args=sys.argv[1:]): |
b16d6a204ac1
stub a command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
146 """command line entry point""" |
23
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
147 parser = OptionParser() |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
148 options, args = parser.parse_args(args) |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
149 |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
150 if len(args) != 1: |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
151 parser.print_usage() |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
152 parser.exit() |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
153 |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
154 factory = IniFactory(args[0]) |
9b2ca32e7a36
wire up command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
155 print factory.load() |
22
b16d6a204ac1
stub a command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
156 |
21
4f7c05630f36
tie up some factory loose ends and sweeten the API with syntactic sugar
Jeff Hammel <jhammel@mozilla.com>
parents:
20
diff
changeset
|
157 if __name__ == '__main__': |
22
b16d6a204ac1
stub a command line entry point
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
158 main() |