From 28a2abf874c3ecbbf91edf1b2b9fe595f0f54099 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Wed, 28 May 2025 19:48:35 +0100 Subject: [PATCH] docs/server: simplify using `http-server` Co-authored-by: NAHO <90870942+trueNAHO@users.noreply.github.com> --- docs/server/default.nix | 37 +++++++++++++++++++------------------ docs/server/server.py | 25 ------------------------- 2 files changed, 19 insertions(+), 43 deletions(-) delete mode 100644 docs/server/server.py diff --git a/docs/server/default.nix b/docs/server/default.nix index b713bfee..c73bd1eb 100644 --- a/docs/server/default.nix +++ b/docs/server/default.nix @@ -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[@]}" + ''; +} diff --git a/docs/server/server.py b/docs/server/server.py deleted file mode 100644 index f6642888..00000000 --- a/docs/server/server.py +++ /dev/null @@ -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()