Fix/url opening (#6044)
continuous-integration/drone/push Build is passing

better webserver stuff

Fixed attempt after previous one broke things.

---------

Co-authored-by: Darragh Elliott <me@delliott.net>
Reviewed-on: #6044
Co-authored-by: delliott <420+delliott@fsfe.org>
This commit was merged in pull request #6044.
This commit is contained in:
2026-08-08 18:26:08 +00:00
committed by tobiasd
co-authored by Darragh Elliott
parent dc480fdecb
commit b4200d61a4
@@ -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")