mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-18 14:46:30 +00:00
Ignore all files and directories that starts with . (#3094)
* Ignore all files and directories that starts with . * pylint * Check all parts
This commit is contained in:
parent
4ea3695982
commit
966b962ccf
@ -1,7 +1,7 @@
|
|||||||
"""Init file for Supervisor add-on data."""
|
"""Init file for Supervisor add-on data."""
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from voluptuous.humanize import humanize_error
|
from voluptuous.humanize import humanize_error
|
||||||
@ -86,15 +86,14 @@ 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: Path, repository: Dict) -> None:
|
def _find_addons(self, path: Path, repository: Dict) -> Optional[list[Path]]:
|
||||||
"""Read data from add-ons folder."""
|
"""Find add-ons in the path."""
|
||||||
try:
|
try:
|
||||||
# Generate a list without artefact, safe for corruptions
|
# Generate a list without artefact, safe for corruptions
|
||||||
addon_list = [
|
addon_list = [
|
||||||
addon
|
addon
|
||||||
for addon in path.glob("**/config.*")
|
for addon in path.glob("**/config.*")
|
||||||
if ".git" not in addon.parts
|
if not [part for part in addon.parts if part.startswith(".")]
|
||||||
and ".github" not in addon.parts
|
|
||||||
and addon.suffix in FILE_SUFFIX_CONFIGURATION
|
and addon.suffix in FILE_SUFFIX_CONFIGURATION
|
||||||
]
|
]
|
||||||
except OSError as err:
|
except OSError as err:
|
||||||
@ -110,6 +109,12 @@ class StoreData(CoreSysAttributes):
|
|||||||
_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
|
||||||
)
|
)
|
||||||
|
return None
|
||||||
|
return addon_list
|
||||||
|
|
||||||
|
def _read_addons_folder(self, path: Path, repository: Dict) -> None:
|
||||||
|
"""Read data from add-ons folder."""
|
||||||
|
if not (addon_list := self._find_addons(path, repository)):
|
||||||
return
|
return
|
||||||
|
|
||||||
for addon in addon_list:
|
for addon in addon_list:
|
||||||
|
24
tests/store/test_reading_addons.py
Normal file
24
tests/store/test_reading_addons.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"""Test that we are reading add-on files correctly."""
|
||||||
|
from pathlib import Path
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from supervisor.coresys import CoreSys
|
||||||
|
|
||||||
|
|
||||||
|
def test_read_addon_files(coresys: CoreSys):
|
||||||
|
"""Test that we are reading add-on files correctly."""
|
||||||
|
with patch(
|
||||||
|
"pathlib.Path.glob",
|
||||||
|
return_value=[
|
||||||
|
Path("addon/config.yml"),
|
||||||
|
Path(".git/config.yml"),
|
||||||
|
Path("somepath/.git/config.yml"),
|
||||||
|
Path("somepath/deeper_in_the_structure/.github/config.yml"),
|
||||||
|
Path(".github/config.yml"),
|
||||||
|
Path(".circleci/config.yml"),
|
||||||
|
],
|
||||||
|
):
|
||||||
|
addon_list = coresys.store.data._find_addons(Path("test"), {})
|
||||||
|
|
||||||
|
assert len(addon_list) == 1
|
||||||
|
assert str(addon_list[0]) == "addon/config.yml"
|
Loading…
x
Reference in New Issue
Block a user