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 @dataclass
class BCSConfig: class BCSConfig:
store_url: str store_url: str
github_token: str | None = None
@dataclass @dataclass
@@ -696,7 +697,11 @@ class BCSCore:
async def process_one(r: RepoItem) -> None: async def process_one(r: RepoItem) -> None:
async with sem: 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.provider = info.provider or r.provider
r.owner = info.owner or r.owner r.owner = info.owner or r.owner
@@ -755,7 +760,11 @@ class BCSCore:
async def _enrich_one_repo(self, r: RepoItem) -> None: async def _enrich_one_repo(self, r: RepoItem) -> None:
"""Fetch provider info + metadata for a single repo item.""" """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.provider = info.provider or r.provider
r.owner = info.owner or r.owner 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) _LOGGER.debug("BCS ensure_repo_details failed for %s", repo_id, exc_info=True)
return r 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) repo = self.get_repo(repo_id)
if not repo: if not repo:
return [] return []
@@ -826,7 +835,14 @@ class BCSCore:
return list(cached.get("versions") or []) return list(cached.get("versions") or [])
try: 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: except Exception:
versions = [] versions = []
@@ -1027,23 +1043,6 @@ class BCSCore:
default_branch=repo.default_branch, 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: def _pick_ref_for_install(self, repo: RepoItem) -> str:
if repo.latest_version and str(repo.latest_version).strip(): if repo.latest_version and str(repo.latest_version).strip():
return str(repo.latest_version).strip() return str(repo.latest_version).strip()