From 51bc30a339b6506661d12ad5c3f1084481ef17ad Mon Sep 17 00:00:00 2001 From: Enthec Date: Thu, 30 May 2024 22:30:15 +0200 Subject: [PATCH] icon path validator optimizations and connect to the main workflow --- ...on_validator.py => icon_path_validator.py} | 12 +++--- .../workflows/scripts/technology_validator.py | 6 +-- .github/workflows/validate.yml | 42 +++++++++++++------ 3 files changed, 38 insertions(+), 22 deletions(-) rename .github/workflows/scripts/{icon_validator.py => icon_path_validator.py} (81%) diff --git a/.github/workflows/scripts/icon_validator.py b/.github/workflows/scripts/icon_path_validator.py similarity index 81% rename from .github/workflows/scripts/icon_validator.py rename to .github/workflows/scripts/icon_path_validator.py index eceff712..a41f24dd 100644 --- a/.github/workflows/scripts/icon_validator.py +++ b/.github/workflows/scripts/icon_path_validator.py @@ -19,25 +19,23 @@ def __init__(self): self._FULL_IMAGES_DIR: Final[pathlib.Path] = pathlib.Path(self._SOURCE_DIR).joinpath(self._IMAGES_DIR).joinpath(self._ICONS_DIR) def validate(self) -> None: - json_icons: list[str] = self.get_json_icons() + json_icons: set[str] = self.get_json_icons() for file in self._FULL_IMAGES_DIR.iterdir(): if file.name not in json_icons: raise InvalidStructureException(f"{file.name} must be used, {file} isn't used!") - def get_json_icons(self) -> list[str]: + def get_json_icons(self) -> set[str]: letters: list[str] = list(string.ascii_lowercase) letters.insert(0, '_') - json_icons: list[str] = [] + json_icons: set[str] = set() for letter in letters: icon_path: pathlib.Path = self._FULL_TECH_DIR.joinpath(f"{letter}.json") with icon_path.open("r", encoding="utf8") as json_file: technologies: dict = json.load(json_file) for tech, data in technologies.items(): - for key, value in data.items(): - if 'icon' == key: - print(value) - json_icons.append(value) + if value := data.get("icon"): + json_icons.add(value) return json_icons diff --git a/.github/workflows/scripts/technology_validator.py b/.github/workflows/scripts/technology_validator.py index 949ca302..268f4708 100644 --- a/.github/workflows/scripts/technology_validator.py +++ b/.github/workflows/scripts/technology_validator.py @@ -126,18 +126,18 @@ def _validate(self, tech_name: str, data: Any) -> bool: return True def _validate_regex(self, tech_name: str, data: Any) -> bool: - if type(data) == str: + if type(data) is str: try: re.compile(data) except re.error as e: self._set_custom_error(InvalidRegexException(f"Unable to compile regex '{data}' for tech '{tech_name}', got error: {e.msg}")) return False - elif type(data) == dict: + elif type(data) is dict: for _, val in data.items(): valid: bool = self._validate_regex(tech_name, val) if not valid: return False - elif type(data) == list: + elif type(data) is list: for item in data: valid: bool = self._validate_regex(tech_name, item) if not valid: diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index cf1761a8..e7f12389 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -5,13 +5,13 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python-version: [ "3.11" ] + python-version: [ "3.12" ] steps: - name: checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -23,13 +23,13 @@ jobs: needs: validate_structure strategy: matrix: - python-version: [ "3.11" ] + python-version: [ "3.12" ] steps: - name: checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -41,13 +41,13 @@ jobs: needs: validate_structure strategy: matrix: - python-version: [ "3.11" ] + python-version: [ "3.12" ] steps: - name: checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -65,13 +65,13 @@ jobs: max-parallel: 20 matrix: file_name: ${{ fromJson(needs.tech_matrix_prep.outputs.technologies) }} - python-version: [ "3.11" ] + python-version: [ "3.12" ] steps: - name: checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -79,3 +79,21 @@ jobs: run: python3 .github/workflows/scripts/technology_validator.py env: TECH_FILE_NAME: ${{ matrix.file_name }} + + validate_icon_path: + runs-on: ubuntu-22.04 + needs: validate_techs + strategy: + matrix: + python-version: [ "3.12" ] + steps: + - name: checkout repository + uses: actions/checkout@v4 + + - name: set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: run category validator + run: python3 .github/workflows/scripts/icon_path_validator.py