From eda0d92f4400ee422c3ccbfa46cf5158a2478476 Mon Sep 17 00:00:00 2001 From: Jimmy Arts Date: Thu, 22 Dec 2022 21:15:08 +0100 Subject: [PATCH] Make forceExclude work with directly specified files (#4609) --- CHANGELOG.md | 4 +++- .../Extensions/Configuration+LintableFiles.swift | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8492b6143..0dd11d39c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,9 @@ #### Enhancements -* None. +* Make forceExclude work with directly specified files. + [jimmya](https://github.com/jimmya) + [#issue_number](https://github.com/realm/SwiftLint/issues/4609) #### Bug Fixes diff --git a/Source/SwiftLintFramework/Extensions/Configuration+LintableFiles.swift b/Source/SwiftLintFramework/Extensions/Configuration+LintableFiles.swift index 7608f3413..fd54a6e2b 100644 --- a/Source/SwiftLintFramework/Extensions/Configuration+LintableFiles.swift +++ b/Source/SwiftLintFramework/Extensions/Configuration+LintableFiles.swift @@ -33,8 +33,15 @@ extension Configuration { excludeByPrefix: Bool = false, fileManager: LintableFileManager = FileManager.default ) -> [String] { - // If path is a file and we're not forcing excludes, skip filtering with excluded/included paths - if path.isFile && !forceExclude { return [path] } + if path.isFile { + if forceExclude { + return excludeByPrefix + ? filterExcludedPathsByPrefix(in: [path.absolutePathStandardized()]) + : filterExcludedPaths(fileManager: fileManager, in: [path.absolutePathStandardized()]) + } + // If path is a file and we're not forcing excludes, skip filtering with excluded/included paths + return [path] + } let pathsForPath = includedPaths.isEmpty ? fileManager.filesToLint(inPath: path, rootDirectory: nil) : [] let includedPaths = self.includedPaths