2018-11-28 07:42:22 +00:00
|
|
|
import argparse
|
|
|
|
import http.server
|
2022-02-21 22:27:03 +00:00
|
|
|
import os
|
2018-11-28 07:42:22 +00:00
|
|
|
import pathlib
|
2022-02-21 22:27:03 +00:00
|
|
|
import socketserver
|
|
|
|
import sys
|
2018-11-28 07:42:22 +00:00
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2018-11-28 07:42:22 +00:00
|
|
|
class Handler(http.server.SimpleHTTPRequestHandler):
|
|
|
|
def end_headers(self):
|
2020-06-28 18:24:40 +00:00
|
|
|
self.send_header("Access-Control-Allow-Origin", "*")
|
2018-11-28 07:42:22 +00:00
|
|
|
super().end_headers()
|
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2020-06-28 18:24:40 +00:00
|
|
|
Handler.extensions_map[".wasm"] = "application/wasm"
|
2018-11-28 07:42:22 +00:00
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2018-11-28 07:42:22 +00:00
|
|
|
def make_parser(parser):
|
2022-04-11 23:01:40 +00:00
|
|
|
parser.description = "Start a server with the supplied dist-dir and port."
|
2020-06-28 18:24:40 +00:00
|
|
|
parser.add_argument(
|
2022-04-11 23:01:40 +00:00
|
|
|
"--dist-dir",
|
2020-06-28 18:24:40 +00:00
|
|
|
action="store",
|
|
|
|
type=str,
|
2022-04-11 23:01:40 +00:00
|
|
|
default="dist",
|
|
|
|
help="set the dist directory (default: %(default)s)",
|
2020-06-28 18:24:40 +00:00
|
|
|
)
|
|
|
|
parser.add_argument(
|
2022-04-09 20:41:10 +00:00
|
|
|
"--port",
|
|
|
|
action="store",
|
|
|
|
type=int,
|
|
|
|
default=8000,
|
|
|
|
help="set the PORT number (default: %(default)s)",
|
2020-06-28 18:24:40 +00:00
|
|
|
)
|
2018-11-28 07:42:22 +00:00
|
|
|
return parser
|
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2018-11-28 07:42:22 +00:00
|
|
|
def server(port):
|
2020-06-28 18:24:40 +00:00
|
|
|
httpd = socketserver.TCPServer(("", port), Handler)
|
2018-11-28 07:42:22 +00:00
|
|
|
return httpd
|
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2018-11-28 07:42:22 +00:00
|
|
|
def main(args):
|
2022-04-09 20:41:10 +00:00
|
|
|
build_dir = pathlib.Path(args.build_dir).resolve()
|
2018-11-28 07:42:22 +00:00
|
|
|
port = args.port
|
|
|
|
httpd = server(port)
|
2018-12-11 07:56:51 +00:00
|
|
|
os.chdir(build_dir)
|
2022-04-09 20:41:10 +00:00
|
|
|
print(f"serving from {build_dir} at localhost:{port}")
|
2018-11-28 07:42:22 +00:00
|
|
|
try:
|
|
|
|
httpd.serve_forever()
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
print("\n...shutting down http server")
|
|
|
|
httpd.shutdown()
|
|
|
|
sys.exit()
|
|
|
|
|
2018-12-07 17:21:56 +00:00
|
|
|
|
2018-11-28 07:42:22 +00:00
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = make_parser(argparse.ArgumentParser())
|
|
|
|
args = parser.parse_args()
|
2018-12-07 17:21:56 +00:00
|
|
|
main(args)
|