docs/server: simplify using http-server

Co-authored-by: NAHO <90870942+trueNAHO@users.noreply.github.com>
This commit is contained in:
Matt Sturgeon 2025-05-28 19:48:35 +01:00
parent af5a0deadd
commit 28a2abf874
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
2 changed files with 19 additions and 43 deletions

View file

@ -1,21 +1,22 @@
{
lib,
runCommand,
makeBinaryWrapper,
python3,
xdg-utils,
docs,
http-server,
writeShellApplication,
}:
runCommand "serve-docs"
{
nativeBuildInputs = [ makeBinaryWrapper ];
meta.mainProgram = "server";
}
''
mkdir -p $out/bin
makeWrapper ${lib.getExe python3} \
$out/bin/server \
--add-flags ${./server.py} \
--chdir ${docs} \
--prefix PATH : ${lib.makeBinPath [ xdg-utils ]}
''
writeShellApplication {
name = "serve-docs";
runtimeInputs = [ http-server ];
runtimeEnv.server_flags = [
# Search for available port
"--port=0"
# Disable browser cache
"-c-1"
# Open using xdg-open
"-o"
];
text = ''
http-server ${docs} "''${server_flags[@]}"
'';
}

View file

@ -1,25 +0,0 @@
from http.server import HTTPServer, SimpleHTTPRequestHandler
from subprocess import call
PORT = 8000
URL = f"http://localhost:{PORT}"
class AutoBrowseHTTPServer(HTTPServer):
def server_activate(self):
HTTPServer.server_activate(self)
print(f"Serving documentation at {URL}")
call(["xdg-open", URL])
class UncachedHTTPHandler(SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
self.send_header("Pragma", "no-cache")
self.send_header("Expires", "0")
super().end_headers()
if __name__ == "__main__":
with AutoBrowseHTTPServer(("", PORT), UncachedHTTPHandler) as httpd:
httpd.serve_forever()