Files
computer-playbook/utils/install/github_release.py
kevinveenbirkenbachandClaude Opus 5 5137465c6f style: delete every comment the comments-valid policy rejects
3529 invalid comments in 528 files, grandfathered in while the linter
only saw the working-tree diff. Removal ran through the linter's own
collectors, so detection and deletion cannot drift: a comment whose
opener line is blank before it and whose closer line is blank after it
loses all its lines, anything else loses only the comment region, and a
line left holding a bare delimiter goes with it.

Five files keep their comments behind a nocheck marker instead. Four are
upstream configs whose inline docs are upstream's own (mautrix, systemd
journald, nextcloud-oidc-login, MediaWiki). In littlejs the
commented-out entries ARE the deactivation mechanism for an example
tile, so deleting them would delete configuration.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 03:22:02 +02:00

32 lines
1014 B
Python

"""GitHub-release asset helpers (latest-tag resolver + downloader)."""
from __future__ import annotations
from urllib.request import urlopen
from utils.install.primitives import download_file
def resolve_latest_tag(latest_url: str, *, timeout: float = 30.0) -> str:
with urlopen(latest_url, timeout=timeout) as response: # noqa: S310 - trusted github URL
final_url = response.geturl()
final_url = final_url.rstrip("/")
if not final_url:
raise RuntimeError("Failed to resolve latest release URL.")
if final_url == latest_url:
raise RuntimeError("Latest release URL did not resolve to a versioned tag.")
tag = final_url.rsplit("/", 1)[-1]
tag = tag.removeprefix("v")
if not tag or tag in (final_url, "latest"):
raise RuntimeError(f"Failed to determine version from {final_url}.")
return tag
def download_release_asset(url: str, output: str) -> None:
download_file(url, output)
__all__ = ["download_release_asset", "resolve_latest_tag"]