#!/usr/bin/env python3
"""
Serves poc.html plus the generated MojoJS lite bindings from a
Chromium build directory.

Usage:
  CHROMIUM_OUT=/path/to/chromium/src/out/asan python3 server.py
Then open http://localhost:8080/poc.html in the macOS ASAN Chromium
launched with --enable-blink-features=MojoJS,MojoJSTest.
"""
import http.server
import os
import sys

PORT = 8080
HERE = os.path.dirname(os.path.abspath(__file__))
OUT = os.environ.get("CHROMIUM_OUT", "")


class Handler(http.server.SimpleHTTPRequestHandler):
    def translate_path(self, path):
        # /gen/... -> <CHROMIUM_OUT>/gen/...
        if path.startswith("/gen/"):
            if not OUT:
                sys.stderr.write("CHROMIUM_OUT not set; cannot serve %s\n" % path)
            return os.path.join(OUT, path.lstrip("/"))
        # everything else from this directory
        return os.path.join(HERE, path.lstrip("/"))

    def end_headers(self):
        self.send_header("Cache-Control", "no-store")
        super().end_headers()


if __name__ == "__main__":
    if not OUT:
        sys.stderr.write(
            "warning: CHROMIUM_OUT env var not set; /gen/ bindings will 404\n"
        )
    os.chdir(HERE)
    sys.stderr.write(f"serving on http://localhost:{PORT}/poc.html\n")
    http.server.HTTPServer(("localhost", PORT), Handler).serve_forever()
