Mercurial > hg > wsgintegrate
annotate wsgintegrate/main.py @ 6:30e69abaadbb
use correct factory type
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 13 Jun 2011 17:59:01 -0700 |
parents | 05683af3240c |
children | 4d9a2a2fb8c0 |
rev | line source |
---|---|
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
2 |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
3 """ |
3 | 4 command line entry point for wsgintegrate |
5 serves an application from a .ini file | |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
6 """ |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
7 |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
8 import sys |
3 | 9 from factory import WSGIfactory |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
10 from optparse import OptionParser |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
11 from server import wsgiref |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
12 |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
13 def main(args=sys.argv[1:]): |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
14 |
3 | 15 # parse command line options |
16 usage = '%prog [options] config-file' | |
17 parser = OptionParser(usage=usage, description=__doc__) | |
18 parser.add_option('-a', '--app', dest='app', default='', | |
19 help='which app to serve from the configuration') | |
20 parser.add_option('-p', '--port', dest='port', | |
21 type='int', default=80, | |
22 help='which port to serve on, if server not specified in configuration') | |
23 parser.add_option('--list-apps', dest='list_apps', | |
24 action='store_true', default=False, | |
25 help='list the WSGI apps available in the configuration') | |
26 parser.add_option('--print-json', dest='print_json', | |
27 action='store_true', default=False, | |
28 help='print JSON format of the configuration') | |
29 parser.add_option('--print-ini', dest='print_ini', | |
30 action='store_true', default=False, | |
31 help='print .ini format of the configuration') | |
32 options, args = parser.parse_args(args) | |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
33 |
3 | 34 # check for single configuration file |
35 if len(args) != 1: # TODO: could munge multiple configs | |
36 parser.print_usage() | |
37 parser.exit() | |
38 config = args[0] | |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
39 |
3 | 40 # create a factory from configuration |
41 # TODO: interpret if the configuration is .ini, JSON, etc | |
6 | 42 factory = WSGIfactory(config, main=options.app) |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
43 |
3 | 44 # print configuration, if specified |
45 if options.list_apps: | |
46 for app in sorted(factory.config.keys()): | |
47 print app | |
48 return | |
49 if options.print_json: | |
50 print factory.json_config() | |
51 return | |
52 if options.print_ini: | |
53 print factory.ini_config() | |
54 return | |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
55 |
3 | 56 # serve it |
57 wsgiref(app=factory.load(), port=options.port) | |
0
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
58 |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
59 if __name__ == '__main__': |
ec815b7cb142
initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
60 main() |