From b4200d61a41f9995ce135344e02f535f9b2dea8c Mon Sep 17 00:00:00 2001 From: delliott <420+delliott@fsfe.org> Date: Sat, 8 Aug 2026 18:26:08 +0000 Subject: [PATCH] Fix/url opening (#6044) better webserver stuff Fixed attempt after previous one broke things. --------- Co-authored-by: Darragh Elliott Reviewed-on: https://git.fsfe.org/FSFE/fsfe-website/pulls/6044 Co-authored-by: delliott <420+delliott@fsfe.org> --- .../phase3/serve_websites.py | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/build/fsfe_website_build/phase3/serve_websites.py b/build/fsfe_website_build/phase3/serve_websites.py index 4b828c0fdb..3a2750f46a 100755 --- a/build/fsfe_website_build/phase3/serve_websites.py +++ b/build/fsfe_website_build/phase3/serve_websites.py @@ -7,17 +7,17 @@ import http.server import logging import multiprocessing import os -import shutil import socketserver +import time +import webbrowser from pathlib import Path from fsfe_website_build.globals import FALLBACK_LANG -from fsfe_website_build.lib.misc import run_command logger = logging.getLogger(__name__) -def _run_webserver(path: str, port: int) -> None: +def _run_webserver(path: Path, port: int) -> None: """Given a path and a port it will serve that dir on that localhost:port.""" os.chdir(path) handler = http.server.SimpleHTTPRequestHandler @@ -41,13 +41,19 @@ def serve_websites( for path in Path(serve_dir).iterdir() if (path.is_dir() and (path.name in site_names)) ) - serves: list[tuple[str, int]] = [] + serves: list[tuple[Path, int]] = [] for index, directory in enumerate(dirs): port = base_port + (increment_number * index) - url = f"http://127.0.0.1:{port}" - logger.info("%s served at %s", directory.name, url) - if shutil.which("xdg-open") is not None: - run_command(["xdg-open", url + f"/index.{FALLBACK_LANG}.html"]) - serves.append((str(directory), port)) + serves.append((directory, port)) with multiprocessing.Pool(len(serves)) as pool: - pool.starmap(_run_webserver, serves) + pool.starmap_async(_run_webserver, serves) + for directory, port in serves: + url = f"http://127.0.0.1:{port}" + logger.info("%s served at %s", directory.name, url) + webbrowser.open(url + f"/index.{FALLBACK_LANG}.html") + # Keep pool alive until interrupted + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + logger.info("shutting down")