Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions cve_bin_tool/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import os
import sys
from enum import Enum
from pathlib import Path
from typing import DefaultDict, Iterator, List, NamedTuple, Pattern, Set, Union


Expand Down Expand Up @@ -115,17 +116,15 @@ def inpath(binary: str) -> bool:
return any(
list(
map(
lambda dirname: os.path.isfile(
os.path.join(dirname, binary + ".exe")
),
lambda dirname: (Path(dirname) / (binary + ".exe")).is_file(),
os.environ.get("PATH", "").split(";"),
)
)
)
return any(
list(
map(
lambda dirname: os.path.isfile(os.path.join(dirname, binary)),
lambda dirname: (Path(dirname) / binary).is_file(),
os.environ.get("PATH", "").split(":"),
)
)
Expand Down Expand Up @@ -163,35 +162,36 @@ def walk(self, roots: list[str] | None = None) -> Iterator[str]:
roots = []
for root in roots:
for dirpath, dirnames, filenames in os.walk(root):
dirpath = Path(dirpath)
# Filters
filenames[:] = [
filename
for filename in filenames
if self.pattern_match(os.path.join(dirpath, filename), self.pattern)
if self.pattern_match(str(dirpath / filename), self.pattern)
and not self.pattern_match(
os.path.join(dirpath, filename), self.file_exclude_pattern
str(dirpath / filename), self.file_exclude_pattern
)
and not self.pattern_match(
os.path.join(dirpath, filename), self.folder_exclude_pattern
str(dirpath / filename), self.folder_exclude_pattern
)
]
dirnames[:] = [
dirname
for dirname in dirnames
if self.pattern_match(
os.path.join(dirpath, dirname), self.folder_include_pattern
str(dirpath / dirname), self.folder_include_pattern
)
and not self.pattern_match(
os.path.join(dirpath, dirname), self.folder_exclude_pattern
str(dirpath / dirname), self.folder_exclude_pattern
)
]
# Yields
if self.yield_files:
for filename in filenames:
yield os.path.normpath(os.path.join(dirpath, filename))
yield str((dirpath / filename).resolve())
if self.yield_folders:
for dirname in dirnames:
yield os.path.normpath(os.path.join(dirpath, dirname))
yield str((dirpath / dirname).resolve())

@staticmethod
def pattern_match(text: str, patterns: str) -> bool:
Expand Down