Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only filter files in directories starting with . #16784

Merged
merged 7 commits into from
Sep 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .printer-linter
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ checks:
diagnostic-mesh-file-extension: true
diagnostic-mesh-file-size: true
diagnostic-definition-redundant-override: true
diagnostic-resources-macos-app-directory-name: true
fixes:
diagnostic-definition-redundant-override: true
format:
Expand Down
2 changes: 1 addition & 1 deletion printer-linter/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[project]
name = "printerlinter"
description = "Cura UltiMaker printer linting tool"
version = "0.1.0"
version = "0.1.1"
authors = [
{ name = "UltiMaker", email = "[email protected]" }
]
Expand Down
13 changes: 7 additions & 6 deletions printer-linter/src/printerlinter/factory.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
from pathlib import Path
from typing import Optional
from typing import Optional, List

from .linters.profile import Profile
from .linters.defintion import Definition
from .linters.linter import Linter
from .linters.meshes import Meshes
from .linters.directory import Directory


def getLinter(file: Path, settings: dict) -> Optional[Linter]:
def getLinter(file: Path, settings: dict) -> Optional[List[Linter]]:
""" Returns a Linter depending on the file format """
if not file.exists():
return None

if ".inst" in file.suffixes and ".cfg" in file.suffixes:
return Profile(file, settings)
return [Directory(file, settings), Profile(file, settings)]

if ".def" in file.suffixes and ".json" in file.suffixes:
if file.stem in ("fdmprinter.def", "fdmextruder.def"):
return None
return Definition(file, settings)
return [Directory(file, settings), Definition(file, settings)]

if file.parent.stem == "meshes":
return Meshes(file, settings)
return [Meshes(file, settings)]

return None
return [Directory(file, settings)]
31 changes: 31 additions & 0 deletions printer-linter/src/printerlinter/linters/directory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from pathlib import Path
from typing import Iterator

from ..diagnostic import Diagnostic
from .linter import Linter


class Directory(Linter):
def __init__(self, file: Path, settings: dict) -> None:
""" Finds issues in the parent directory"""
super().__init__(file, settings)

def check(self) -> Iterator[Diagnostic]:
if self._settings["checks"].get("diagnostic-resources-macos-app-directory-name", False):
for check in self.checkForDotInDirName():
yield check

yield

def checkForDotInDirName(self) -> Iterator[Diagnostic]:
""" Check if there is a dot in the directory name, MacOS has trouble signing and notarizing otherwise """
if any("." in p for p in self._file.parent.parts):
yield Diagnostic(
file = self._file,
diagnostic_name = "diagnostic-resources-macos-app-directory-name",
message = f"Directory name containing a `.` not allowed {self._file.suffix}, rename directory containing this file e.q: `_`",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should maybe mention that this is specifically for MacOS. Less questions from implementers that way ;-)

level = "Error",
offset = 1
)
yield

10 changes: 7 additions & 3 deletions printer-linter/src/terminal.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,16 @@ def main() -> None:

def diagnoseIssuesWithFile(file: Path, settings: dict) -> List[Diagnostic]:
""" For file, runs all diagnostic checks in settings and returns a list of diagnostics """
linter = factory.getLinter(file, settings)
linters = factory.getLinter(file, settings)

if not linter:
if not linters:
return []

return list(filter(lambda d: d is not None, linter.check()))
linter_results = []
for linter in linters:
linter_results.extend(list(filter(lambda d: d is not None, linter.check())))

return linter_results


def applyFixesToFile(file, settings, full_body_check) -> None:
Expand Down
Loading
Loading