~jelmer/loggerhead/breezy-compat

« back to all changes in this revision

Viewing changes to loggerhead/main.py

  • Committer: Colin Watson
  • Date: 2019-09-19 08:10:36 UTC
  • mfrom: (491.2.62 breezy)
  • Revision ID: cjwatson@canonical.com-20190919081036-q1symc2h2iedtlh3
[r=cjwatson] Switch loggerhead over to using the Breezy rather than Bazaar APIs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
import os
22
22
import sys
23
23
 
24
 
from bzrlib.plugin import load_plugins
 
24
from breezy.plugin import load_plugins
 
25
from breezy.transport import location_to_url
25
26
 
26
27
from paste import httpserver
27
28
from paste.httpexceptions import HTTPExceptionHandler, HTTPInternalServerError
28
29
from paste.translogger import TransLogger
29
30
 
30
 
from loggerhead import __version__
31
 
from loggerhead.apps.transport import (
 
31
from . import __version__
 
32
from .apps.transport import (
32
33
    BranchesFromTransportRoot, UserBranchesFromTransportRoot)
33
 
from loggerhead.config import LoggerheadConfig
34
 
from loggerhead.util import Reloader
35
 
from loggerhead.apps.error import ErrorHandlerApp
36
 
 
37
 
 
38
 
def get_config_and_path(args):
 
34
from .config import LoggerheadConfig
 
35
from .util import Reloader
 
36
from .apps.error import ErrorHandlerApp
 
37
 
 
38
 
 
39
def get_config_and_base(args):
39
40
    config = LoggerheadConfig(args)
40
41
 
41
42
    if config.get_option('show_version'):
42
 
        print "loggerhead %s" % (__version__,)
 
43
        print("loggerhead %s" % (__version__,))
43
44
        sys.exit(0)
44
45
 
45
46
    if config.arg_count > 1:
50
51
    else:
51
52
        base = '.'
52
53
 
 
54
    base = location_to_url(base)
 
55
 
53
56
    if not config.get_option('allow_writes'):
54
57
        base = 'readonly+' + base
55
58
 
70
73
    else:
71
74
        if config.get_option('log_folder'):
72
75
            logfile_path = os.path.join(
73
 
                config.get_option('log_folder'), 'serve-branches.log')
 
76
                config.get_option('log_folder'), 'loggerhead-serve.log')
74
77
        else:
75
 
            logfile_path = 'serve-branches.log'
 
78
            logfile_path = 'loggerhead-serve.log'
76
79
        handler = logging.FileHandler(logfile_path, 'a')
77
80
        formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(name)s:'
78
81
                                      ' %(message)s')
92
95
    return logger
93
96
 
94
97
 
95
 
def make_app_for_config_and_path(config, base):
 
98
def make_app_for_config_and_base(config, base):
96
99
    if config.get_option('trunk_dir') and not config.get_option('user_dirs'):
97
 
        print "--trunk-dir is only valid with --user-dirs"
 
100
        print("--trunk-dir is only valid with --user-dirs")
98
101
        sys.exit(1)
99
102
 
100
103
    if config.get_option('reload'):
105
108
 
106
109
    if config.get_option('user_dirs'):
107
110
        if not config.get_option('trunk_dir'):
108
 
            print "You didn't specify a directory for the trunk directories."
 
111
            print("You didn't specify a directory for the trunk directories.")
109
112
            sys.exit(1)
110
113
        app = UserBranchesFromTransportRoot(base, config)
111
114
    else:
141
144
                    raise exc
142
145
                return app(environ, start_response)
143
146
            return wrapped
 
147
        logging.warning(
 
148
                'PasteDeploy not available; unable to support '
 
149
                'access through a reverse proxy.')
144
150
        app = check_not_proxied(app)
145
151
    else:
146
152
        app = PrefixMiddleware(app, prefix=prefix)
155
161
def main(args):
156
162
    load_plugins()
157
163
 
158
 
    config, path = get_config_and_path(args)
 
164
    config, base = get_config_and_base(args)
159
165
 
160
 
    app = make_app_for_config_and_path(config, path)
 
166
    app = make_app_for_config_and_base(config, base)
161
167
 
162
168
    if not config.get_option('user_port'):
163
169
        port = '8080'
184
190
        elif protocol == 'ajp':
185
191
            from flup.server.ajp import WSGIServer
186
192
        else:
187
 
            print 'Unknown protocol: %s.' % (protocol)
 
193
            print('Unknown protocol: %s.' % (protocol))
188
194
            sys.exit(1)
189
195
        WSGIServer(app, bindAddress=(host, int(port))).run()