"""
static_server.py
Serves the two HTML tools in production. Same ThreadingHTTPServer as the
local launchers, minus the interactive menu / webbrowser.open() calls that
only make sense on someone's own machine.
"""

import argparse
import os
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer


class QuietHandler(SimpleHTTPRequestHandler):
    protocol_version = 'HTTP/1.0'
    def log_message(self, *a): pass


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--bind', default=os.environ.get('STATUS_CHECKER_BIND', '127.0.0.1'))
    parser.add_argument('--port', type=int, default=int(os.environ.get('STATUS_CHECKER_STATIC_PORT', '5051')))
    parser.add_argument('--dir', default=os.environ.get('STATUS_CHECKER_STATIC_DIR', os.path.dirname(os.path.abspath(__file__))))
    args = parser.parse_args()

    os.chdir(args.dir)
    server = ThreadingHTTPServer((args.bind, args.port), QuietHandler)
    print(f'Static server listening on {args.bind}:{args.port}, serving {args.dir}')
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.shutdown()


if __name__ == '__main__':
    main()
