Files
SwiftLint/Source/SwiftLintFramework/Extensions/Configuration+LintableFiles.swift
T
2018-07-26 10:21:13 -07:00

29 lines
1.2 KiB
Swift

import Foundation
import SourceKittenFramework
extension Configuration {
public func lintableFiles(inPath path: String, forceExclude: Bool) -> [File] {
return lintablePaths(inPath: path, forceExclude: forceExclude).compactMap(File.init(pathDeferringReading:))
}
internal func lintablePaths(inPath path: String, forceExclude: Bool,
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]
}
let pathsForPath = included.isEmpty ? fileManager.filesToLint(inPath: path, rootDirectory: nil) : []
let excludedPaths = excluded
.flatMap { Glob.resolveGlob($0) }
.flatMap {
fileManager.filesToLint(inPath: $0, rootDirectory: rootPath)
}
let includedPaths = included.flatMap {
fileManager.filesToLint(inPath: $0, rootDirectory: rootPath)
}
return (pathsForPath + includedPaths).filter {
!excludedPaths.contains($0)
}
}
}