#!/usr/bin/env python
"""A version of Python's SimpleHTTPServer that flushes its output."""
import sys

try:
    from http.server import HTTPServer, SimpleHTTPRequestHandler
except ImportError:
    from BaseHTTPServer import HTTPServer
    from SimpleHTTPServer import SimpleHTTPRequestHandler

def serve_forever(port=0):
    """Spins up an HTTP server on all interfaces and the given port.

    A message is printed to stdout specifying the address and port being used
    by the server.

    :param int port: port number to use.

    """
    server = HTTPServer(('', port), SimpleHTTPRequestHandler)
    print('Serving HTTP on {0} port {1} ...'.format(*server.server_address))
    sys.stdout.flush()
    server.serve_forever()


if __name__ == '__main__':
    kwargs = {}
    if len(sys.argv) > 1:
        kwargs['port'] = int(sys.argv[1])
    serve_forever(**kwargs)
