Reset on invalid filesystem (#2307)

This commit is contained in:
Pascal Vizeli 2020-11-28 15:57:00 +01:00 committed by GitHub
parent aa5297026f
commit 5c25fcd84c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,7 +16,7 @@ from ..const import (
) )
from ..coresys import CoreSys, CoreSysAttributes from ..coresys import CoreSys, CoreSysAttributes
from ..exceptions import JsonFileError from ..exceptions import JsonFileError
from ..resolution.const import ContextType, IssueType from ..resolution.const import ContextType, IssueType, SuggestionType
from ..utils.json import read_json_file from ..utils.json import read_json_file
from .utils import extract_hash_from_path from .utils import extract_hash_from_path
from .validate import SCHEMA_REPOSITORY_CONFIG from .validate import SCHEMA_REPOSITORY_CONFIG
@ -33,7 +33,7 @@ class StoreData(CoreSysAttributes):
self.repositories: Dict[str, Any] = {} self.repositories: Dict[str, Any] = {}
self.addons: Dict[str, Any] = {} self.addons: Dict[str, Any] = {}
def update(self): def update(self) -> None:
"""Read data from add-on repository.""" """Read data from add-on repository."""
self.repositories.clear() self.repositories.clear()
self.addons.clear() self.addons.clear()
@ -52,7 +52,7 @@ class StoreData(CoreSysAttributes):
if repository_element.is_dir(): if repository_element.is_dir():
self._read_git_repository(repository_element) self._read_git_repository(repository_element)
def _read_git_repository(self, path): def _read_git_repository(self, path: Path) -> None:
"""Process a custom repository folder.""" """Process a custom repository folder."""
slug = extract_hash_from_path(path) slug = extract_hash_from_path(path)
@ -73,7 +73,7 @@ class StoreData(CoreSysAttributes):
self.repositories[slug] = repository_info self.repositories[slug] = repository_info
self._read_addons_folder(path, slug) self._read_addons_folder(path, slug)
def _read_addons_folder(self, path, repository): def _read_addons_folder(self, path: Path, repository: Dict) -> None:
"""Read data from add-ons folder.""" """Read data from add-ons folder."""
try: try:
# Generate a list without artefact, safe for corruptions # Generate a list without artefact, safe for corruptions
@ -84,7 +84,10 @@ class StoreData(CoreSysAttributes):
] ]
except OSError as err: except OSError as err:
self.sys_resolution.create_issue( self.sys_resolution.create_issue(
IssueType.CORRUPT_REPOSITORY, ContextType.SYSTEM IssueType.CORRUPT_REPOSITORY,
ContextType.STORE,
reference=path.stem,
suggestions=[SuggestionType.EXECUTE_RESET],
) )
_LOGGER.critical( _LOGGER.critical(
"Can't process %s because of Filesystem issues: %s", repository, err "Can't process %s because of Filesystem issues: %s", repository, err