]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/cmd/web.py
Replace LocalRepo/RemoteRepo __del__ with context management
[bup.git] / lib / bup / cmd / web.py
index 20333cbbbb47f11b9685ef7186a029ade7c75ed8..c609d872e72456ff1ea38fbe8e32045f8432795f 100755 (executable)
@@ -290,30 +290,30 @@ def main(argv):
     except AttributeError:
         sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
 
-    application = tornado.web.Application([
-        (r"(?P<path>/.*)", BupRequestHandler, dict(repo=LocalRepo())),
-    ], **settings)
-
-    http_server = HTTPServer(application)
-    io_loop_pending = IOLoop.instance()
-
-    if isinstance(address, InetAddress):
-        sockets = tornado.netutil.bind_sockets(address.port, address.host)
-        http_server.add_sockets(sockets)
-        print('Serving HTTP on %s:%d...' % sockets[0].getsockname()[0:2])
-        if opt.browser:
-            browser_addr = 'http://' + address[0] + ':' + str(address[1])
-            io_loop_pending.add_callback(lambda : webbrowser.open(browser_addr))
-    elif isinstance(address, UnixAddress):
-        unix_socket = bind_unix_socket(address.path)
-        http_server.add_socket(unix_socket)
-        print('Serving HTTP on filesystem socket %r' % address.path)
-    else:
-        log('error: unexpected address %r', address)
-        sys.exit(1)
+    with LocalRepo() as repo:
+        handlers = [ (r"(?P<path>/.*)", BupRequestHandler, dict(repo=repo))]
+        application = tornado.web.Application(handlers, **settings)
+
+        http_server = HTTPServer(application)
+        io_loop_pending = IOLoop.instance()
+
+        if isinstance(address, InetAddress):
+            sockets = tornado.netutil.bind_sockets(address.port, address.host)
+            http_server.add_sockets(sockets)
+            print('Serving HTTP on %s:%d...' % sockets[0].getsockname()[0:2])
+            if opt.browser:
+                browser_addr = 'http://' + address[0] + ':' + str(address[1])
+                io_loop_pending.add_callback(lambda : webbrowser.open(browser_addr))
+        elif isinstance(address, UnixAddress):
+            unix_socket = bind_unix_socket(address.path)
+            http_server.add_socket(unix_socket)
+            print('Serving HTTP on filesystem socket %r' % address.path)
+        else:
+            log('error: unexpected address %r', address)
+            sys.exit(1)
 
-    io_loop = io_loop_pending
-    io_loop.start()
+        io_loop = io_loop_pending
+        io_loop.start()
 
     if saved_errors:
         log('WARNING: %d errors encountered while saving.\n' % len(saved_errors))