FBT: Don't lint JS packages (#4030)

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
WillyJL
2024-12-23 01:52:37 +01:00
committed by GitHub
parent a02781b936
commit 33f1a16094
2 changed files with 20 additions and 8 deletions

View File

@@ -29,6 +29,8 @@ env = ENV.Clone(
TARGETS_ROOT=Dir("#/targets"), TARGETS_ROOT=Dir("#/targets"),
LINT_SOURCES=[ LINT_SOURCES=[
Dir("applications"), Dir("applications"),
# Not C code
Dir("!applications/system/js_app/packages"),
], ],
LIBPATH=[ LIBPATH=[
"${LIB_DIST_DIR}", "${LIB_DIST_DIR}",

View File

@@ -35,21 +35,25 @@ class Main(App):
self.parser_format.set_defaults(func=self.format) self.parser_format.set_defaults(func=self.format)
@staticmethod @staticmethod
def _filter_lint_directories(dirnames: list[str]): def _filter_lint_directories(
dirpath: str, dirnames: list[str], excludes: tuple[str]
):
# Skipping 3rd-party code - usually resides in subfolder "lib" # Skipping 3rd-party code - usually resides in subfolder "lib"
if "lib" in dirnames: if "lib" in dirnames:
dirnames.remove("lib") dirnames.remove("lib")
# Skipping hidden folders # Skipping hidden and excluded folders
for dirname in dirnames.copy(): for dirname in dirnames.copy():
if dirname.startswith("."): if dirname.startswith("."):
dirnames.remove(dirname) dirnames.remove(dirname)
if os.path.join(dirpath, dirname).startswith(excludes):
dirnames.remove(dirname)
def _check_folders(self, folders: list): def _check_folders(self, folders: list, excludes: tuple[str]):
show_message = False show_message = False
pattern = re.compile(SOURCE_CODE_DIR_PATTERN) pattern = re.compile(SOURCE_CODE_DIR_PATTERN)
for folder in folders: for folder in folders:
for dirpath, dirnames, filenames in os.walk(folder): for dirpath, dirnames, filenames in os.walk(folder):
self._filter_lint_directories(dirnames) self._filter_lint_directories(dirpath, dirnames, excludes)
for dirname in dirnames: for dirname in dirnames:
if not pattern.match(dirname): if not pattern.match(dirname):
@@ -61,11 +65,11 @@ class Main(App):
"Folders are not renamed automatically, please fix it by yourself" "Folders are not renamed automatically, please fix it by yourself"
) )
def _find_sources(self, folders: list): def _find_sources(self, folders: list, excludes: tuple[str]):
output = [] output = []
for folder in folders: for folder in folders:
for dirpath, dirnames, filenames in os.walk(folder): for dirpath, dirnames, filenames in os.walk(folder):
self._filter_lint_directories(dirnames) self._filter_lint_directories(dirpath, dirnames, excludes)
for filename in filenames: for filename in filenames:
ext = os.path.splitext(filename.lower())[1] ext = os.path.splitext(filename.lower())[1]
@@ -168,14 +172,20 @@ class Main(App):
def _perform(self, dry_run: bool): def _perform(self, dry_run: bool):
result = 0 result = 0
sources = self._find_sources(self.args.input) excludes = []
for folder in self.args.input.copy():
if folder.startswith("!"):
excludes.append(folder.removeprefix("!"))
self.args.input.remove(folder)
excludes = tuple(excludes)
sources = self._find_sources(self.args.input, excludes)
if not self._format_sources(sources, dry_run=dry_run): if not self._format_sources(sources, dry_run=dry_run):
result |= 0b001 result |= 0b001
if not self._apply_file_naming_convention(sources, dry_run=dry_run): if not self._apply_file_naming_convention(sources, dry_run=dry_run):
result |= 0b010 result |= 0b010
if not self._apply_file_permissions(sources, dry_run=dry_run): if not self._apply_file_permissions(sources, dry_run=dry_run):
result |= 0b100 result |= 0b100
self._check_folders(self.args.input) self._check_folders(self.args.input, excludes)
return result return result
def check(self): def check(self):