29 lines
745 B
Python
29 lines
745 B
Python
"""Various URL utils for HACS."""
|
|
import re
|
|
from typing import Literal
|
|
|
|
GIT_SHA = re.compile(r"^[a-fA-F0-9]{40}$")
|
|
|
|
|
|
def github_release_asset(
|
|
*,
|
|
repository: str,
|
|
version: str,
|
|
filename: str,
|
|
**_,
|
|
) -> str:
|
|
"""Generate a download URL for a release asset."""
|
|
return f"https://github.com/{repository}/releases/download/{version}/{filename}"
|
|
|
|
|
|
def github_archive(
|
|
*,
|
|
repository: str,
|
|
version: str,
|
|
variant: Literal["heads", "tags"] = "heads",
|
|
**_,
|
|
) -> str:
|
|
"""Generate a download URL for a repository zip."""
|
|
if GIT_SHA.match(version):
|
|
return f"https://github.com/{repository}/archive/{version}.zip"
|
|
return f"https://github.com/{repository}/archive/refs/{variant}/{version}.zip"
|