mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-11-11 20:10:16 +00:00
* Rename repository fixture to test_repository
Also don't remove the built-in repositories. The list was incomplete,
and tests don't seem to require that anymore.
* Get rid of StoreType
The type doesn't have much value, we have constant strings anyways.
* Introduce types.py
* Use slug to determine which repository urls to return
* Simplify BuiltinRepository enum
* Mock GitRepo load
* Improve URL handling and repository creation logic
* Refactor update_repositories
* Get rid of get_from_url
It is no longer used in production code.
* More refactoring
* Address pylint
* Introduce is_git_based property to Repository class
Return all git based URLs, including the Core repository.
* Revert "Introduce is_git_based property to Repository class"
This reverts commit dfd5ad79bf.
* Fold type.py into const.py
Align more with how Supervisor code is typically structured.
* Update supervisor/store/__init__.py
Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
* Apply repository remove suggestion
* Fix tests
---------
Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""Constants for the add-on store."""
|
|
|
|
from enum import StrEnum
|
|
from pathlib import Path
|
|
|
|
from ..const import (
|
|
REPOSITORY_CORE,
|
|
REPOSITORY_LOCAL,
|
|
SUPERVISOR_DATA,
|
|
URL_HASSIO_ADDONS,
|
|
)
|
|
|
|
FILE_HASSIO_STORE = Path(SUPERVISOR_DATA, "store.json")
|
|
"""Repository type definitions for the store."""
|
|
|
|
|
|
class BuiltinRepository(StrEnum):
|
|
"""All built-in repositories that come pre-configured."""
|
|
|
|
# Local repository (non-git, special handling)
|
|
LOCAL = REPOSITORY_LOCAL
|
|
|
|
# Git-based built-in repositories
|
|
CORE = REPOSITORY_CORE
|
|
COMMUNITY_ADDONS = "https://github.com/hassio-addons/repository"
|
|
ESPHOME = "https://github.com/esphome/home-assistant-addon"
|
|
MUSIC_ASSISTANT = "https://github.com/music-assistant/home-assistant-addon"
|
|
|
|
@property
|
|
def git_url(self) -> str:
|
|
"""Return the git URL for this repository."""
|
|
if self == BuiltinRepository.LOCAL:
|
|
raise RuntimeError("Local repository does not have a git URL")
|
|
if self == BuiltinRepository.CORE:
|
|
return URL_HASSIO_ADDONS
|
|
else:
|
|
return self.value # For URL-based repos, value is the URL
|
|
|
|
|
|
# All repositories that are considered "built-in" and protected from removal
|
|
ALL_BUILTIN_REPOSITORIES = {repo.value for repo in BuiltinRepository}
|