This commit is contained in:
2026-01-19 17:39:37 +00:00
parent 368642345d
commit b863ed4d51

View File

@@ -58,6 +58,7 @@ class BCSInstallError(BCSError):
@dataclass
class BCSConfig:
store_url: str
github_token: str | None = None
@dataclass
@@ -696,7 +697,11 @@ class BCSCore:
async def process_one(r: RepoItem) -> None:
async with sem:
info: RepoInfo = await fetch_repo_info(self.hass, r.url)
info: RepoInfo = await fetch_repo_info(
self.hass,
r.url,
github_token=self.config.github_token,
)
r.provider = info.provider or r.provider
r.owner = info.owner or r.owner
@@ -755,7 +760,11 @@ class BCSCore:
async def _enrich_one_repo(self, r: RepoItem) -> None:
"""Fetch provider info + metadata for a single repo item."""
info: RepoInfo = await fetch_repo_info(self.hass, r.url)
info: RepoInfo = await fetch_repo_info(
self.hass,
r.url,
github_token=self.config.github_token,
)
r.provider = info.provider or r.provider
r.owner = info.owner or r.owner
@@ -807,7 +816,7 @@ class BCSCore:
_LOGGER.debug("BCS ensure_repo_details failed for %s", repo_id, exc_info=True)
return r
async def list_repo_versions(self, repo_id: str) -> list[dict[str, Any]]:
async def list_repo_versions(self, repo_id: str, *, limit: int = 20) -> list[dict[str, str]]:
repo = self.get_repo(repo_id)
if not repo:
return []
@@ -826,7 +835,14 @@ class BCSCore:
return list(cached.get("versions") or [])
try:
versions = await fetch_repo_versions(self.hass, repo.url)
versions = await fetch_repo_versions(
self.hass,
repo.url,
provider=repo.provider,
default_branch=repo.default_branch,
github_token=self.config.github_token,
limit=limit,
)
except Exception:
versions = []
@@ -1027,23 +1043,6 @@ class BCSCore:
default_branch=repo.default_branch,
)
async def list_repo_versions(self, repo_id: str, *, limit: int = 20) -> list[dict[str, str]]:
"""List installable versions/refs for a repo.
This is used by the UI to allow selecting an older tag/release.
"""
repo = self.get_repo(repo_id)
if not repo:
raise BCSInstallError(f"repo_id not found: {repo_id}")
return await fetch_repo_versions(
self.hass,
repo.url,
provider=repo.provider,
default_branch=repo.default_branch,
limit=limit,
)
def _pick_ref_for_install(self, repo: RepoItem) -> str:
if repo.latest_version and str(repo.latest_version).strip():
return str(repo.latest_version).strip()