~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to serve-branches

  • Committer: Michael Hudson
  • Date: 2008-07-31 04:49:15 UTC
  • mto: This revision was merged to the branch mainline in revision 188.
  • Revision ID: michael.hudson@canonical.com-20080731044915-x54ly6qev5sdwlm7
some tweaks

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
"""Search for branches underneath a directory and serve them all."""
17
17
 
18
18
import logging
19
 
import os
20
19
import sys
21
20
 
22
 
from optparse import OptionParser
23
 
 
24
21
from paste import httpserver
25
22
from paste.httpexceptions import HTTPExceptionHandler
26
23
from paste.translogger import TransLogger
27
24
 
28
 
from loggerhead import __version__
29
 
from loggerhead.apps.filesystem import (
30
 
    BranchesFromFileSystemRoot, UserBranchesFromFileSystemRoot)
31
 
 
32
 
 
33
 
def command_line_parser():
34
 
    parser = OptionParser("%prog [options] <path>")
35
 
    parser.set_defaults(
36
 
        user_dirs=False,
37
 
        show_version=False,
38
 
        )
39
 
    parser.add_option("--user-dirs", action="store_true", dest="user_dirs",
40
 
                      help="Serve user directories as ~user.")
41
 
    parser.add_option("--trunk-dir", metavar="DIR",
42
 
                      help="The directory that contains the trunk branches.")
43
 
    parser.add_option("--port", dest="user_port",
44
 
                      help="Port Loggerhead should listen on. 8080 is the default one.")
45
 
    parser.add_option("--host", dest="user_host",
46
 
                      help="Host Loggerhead should listen on.")
47
 
    parser.add_option("--prefix", dest="user_prefix",
48
 
                      help="Specify host prefix.")
49
 
    parser.add_option("--version", action="store_true", dest="show_version",
50
 
                      help="Print the software version and exit")
51
 
    return parser
52
 
 
53
 
 
54
 
def main(args):
55
 
    logging.basicConfig()
56
 
    logging.getLogger().setLevel(logging.DEBUG)
57
 
 
58
 
    parser = command_line_parser()
59
 
    (options, args) = parser.parse_args(sys.argv[1:])
60
 
 
61
 
    if options.show_version:
62
 
        print "loggerhead %s" % __version__
63
 
        sys.exit(0)
64
 
 
65
 
    if len(args) > 1:
66
 
        parser.print_help()
67
 
        sys.exit(1)
68
 
    elif len(args) == 1:
69
 
        [path] = args
70
 
    else:
71
 
        path = '.'
72
 
 
73
 
    if not os.path.isdir(path):
74
 
        print "%s is not a directory" % path
75
 
        sys.exit(1)
76
 
 
77
 
    if options.trunk_dir and not options.user_dirs:
78
 
        print "--trunk-dir is only valid with --user-dirs"
79
 
        sys.exit(1)
80
 
 
81
 
    if options.user_dirs:
82
 
        if not options.trunk_dir:
83
 
            print "You didn't specify a directory for the trunk directories."
84
 
            sys.exit(1)
85
 
        app = UserBranchesFromFileSystemRoot(path, options.trunk_dir)
86
 
    else:
87
 
        app = BranchesFromFileSystemRoot(path)
88
 
    app = HTTPExceptionHandler(app)
89
 
    app = TransLogger(app)
90
 
 
91
 
    if not options.user_prefix:
92
 
        prefix = '/'
93
 
    else:
94
 
        prefix = options.user_prefix
95
 
 
96
 
    try:
97
 
        from paste.deploy.config import PrefixMiddleware
98
 
    except ImportError:
99
 
        pass
100
 
    else:
101
 
        app = PrefixMiddleware(app, prefix=prefix)
102
 
    
103
 
    if not options.user_port:
104
 
        port = '8080'
105
 
    else:
106
 
        port = options.user_port
107
 
 
108
 
    if not options.user_host:
109
 
        host = '0.0.0.0'
110
 
    else:
111
 
        host = options.user_host
112
 
 
113
 
    httpserver.serve(app, host=host, port=port)
114
 
 
115
 
 
116
 
if __name__ == "__main__":
117
 
    main(sys.argv)
 
25
from loggerhead.apps.filesystem import BranchesFromFileSystemRoot
 
26
 
 
27
 
 
28
logging.basicConfig()
 
29
logging.getLogger().setLevel(logging.DEBUG)
 
30
 
 
31
if len(sys.argv) > 1:
 
32
    path = sys.argv[1]
 
33
else:
 
34
    path = '.'
 
35
 
 
36
app = BranchesFromFileSystemRoot(path)
 
37
 
 
38
app = HTTPExceptionHandler(app)
 
39
app = TransLogger(app)
 
40
 
 
41
try:
 
42
    from paste.deploy.config import PrefixMiddleware
 
43
except ImportError:
 
44
    pass
 
45
else:
 
46
    app = PrefixMiddleware(app)
 
47
 
 
48
#from paste.evalexception import EvalException
 
49
#app = EvalException(app)
 
50
 
 
51
httpserver.serve(app, host='0.0.0.0', port='8080')