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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
4 command line entry point for wsgintegrate
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
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
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
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
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
15 # parse command line options
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
16 usage = '%prog [options] config-file'
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
17 parser = OptionParser(usage=usage, description=__doc__)
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
18 parser.add_option('-a', '--app', dest='app', default='',
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
19 help='which app to serve from the configuration')
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
20 parser.add_option('-p', '--port', dest='port',
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
21 type='int', default=80,
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
22 help='which port to serve on, if server not specified in configuration')
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
23 parser.add_option('--list-apps', dest='list_apps',
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
24 action='store_true', default=False,
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
25 help='list the WSGI apps available in the configuration')
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
26 parser.add_option('--print-json', dest='print_json',
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
27 action='store_true', default=False,
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
28 help='print JSON format of the configuration')
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
29 parser.add_option('--print-ini', dest='print_ini',
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
30 action='store_true', default=False,
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
31 help='print .ini format of the configuration')
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
32 options, args = parser.parse_args(args)
0
ec815b7cb142 initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
33
3
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
34 # check for single configuration file
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
35 if len(args) != 1: # TODO: could munge multiple configs
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
36 parser.print_usage()
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
37 parser.exit()
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
38 config = args[0]
0
ec815b7cb142 initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
39
3
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
40 # create a factory from configuration
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
41 # TODO: interpret if the configuration is .ini, JSON, etc
6
30e69abaadbb use correct factory type
Jeff Hammel <jhammel@mozilla.com>
parents: 3
diff changeset
42 factory = WSGIfactory(config, main=options.app)
0
ec815b7cb142 initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
43
3
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
44 # print configuration, if specified
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
45 if options.list_apps:
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
46 for app in sorted(factory.config.keys()):
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
47 print app
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
48 return
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
49 if options.print_json:
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
50 print factory.json_config()
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
51 return
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
52 if options.print_ini:
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
53 print factory.ini_config()
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
54 return
0
ec815b7cb142 initial commit of wsgintegrate
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
55
3
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
56 # serve it
05683af3240c fix up main.py
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
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()