Skip to content
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
.build/
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ For example, if you need to:
- exclude `.build` and `.github` paths from scanning
- exclude target `SomeTarget` from scanning
- exclude package `SomePackage` from scanning
- exclude all SPM test targets from scanning
- exclude `someInternalPath` only for `SICDemoApp` target from scanning
- exclude `SomeImport` import statements only for `SICDemoApp` target from scanning
- throw error when scan finds `STLT` import statement only for `SICDemoApp` target
Expand All @@ -56,6 +57,7 @@ excludedTargets:
- SomeTarget
excludedPackages:
- SomePackage
excludeAllSPMTestTargets: false
diagrams:
regular:
layers:
Expand Down
6 changes: 6 additions & 0 deletions Sources/Configuration/Configuration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,22 @@ struct Configurations: Codable, Equatable {
let excludedPaths: [String]
let excludedTargets: [String]
let excludedPackages: [String]
let excludeAllSPMTestTargets: Bool
let diagrams: DiagramsConfiguration?

init(
configurations: [String: Configuration] = [:],
excludedTargets: [String] = [],
excludedPaths: [String] = [],
excludedPackages: [String] = [],
excludeAllSPMTestTargets: Bool = false,
diagrams: DiagramsConfiguration? = nil
) {
self.configurations = configurations
self.excludedTargets = excludedTargets
self.excludedPaths = excludedPaths
self.excludedPackages = excludedPackages
self.excludeAllSPMTestTargets = excludeAllSPMTestTargets
self.diagrams = diagrams
}

Expand All @@ -34,6 +37,7 @@ struct Configurations: Codable, Equatable {
case excludedPaths
case excludedPackages
case excludedTargets
case excludeAllSPMTestTargets
case diagrams
}

Expand All @@ -43,10 +47,12 @@ struct Configurations: Codable, Equatable {
let excludedTargets = try? container.decode([String].self, forKey: .excludedTargets)
let excludedPackages = try? container.decode([String].self, forKey: .excludedPackages)
let excludedPaths = try? container.decode([String].self, forKey: .excludedPaths)
let excludeAllSPMTestTargets = try? container.decode(Bool.self, forKey: .excludeAllSPMTestTargets)
self.diagrams = try? container.decode(DiagramsConfiguration.self, forKey: .diagrams)
self.excludedTargets = excludedTargets ?? []
self.excludedPackages = excludedPackages ?? []
self.excludedPaths = excludedPaths ?? []
self.excludeAllSPMTestTargets = excludeAllSPMTestTargets ?? false
self.configurations = configurations ?? [:]
}
}
Expand Down
3 changes: 3 additions & 0 deletions Sources/SPMParsing/PackagesParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ final class PackagesParser {
diagramBuilder.append(package: package)
let targets = package.targets
for target in targets {
if configs.excludeAllSPMTestTargets && target.type == .test {
continue
}
let config = configs.configurations[target.name] ?? .default
print("Package: \(package.name) Target: \(target.name) - Type: \(target.type.rawValue)")
guard target.duplicateDependencies.isEmpty else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ extension Configurations {
)
],
excludedTargets: ["Tests"],
excludedPackages: ["PackageTest"]
excludedPackages: ["PackageTest"],
excludeAllSPMTestTargets: false
)
}
}
Expand Down
6 changes: 2 additions & 4 deletions packages.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
group framework(vscode-icons:file-type-swift)[Framework]
junction _framework in framework
%% Foundation
service examplemodule(vscode-icons:file-type-package)[ExampleModule] in foundation
%% Framework
service othermodule(vscode-icons:file-type-package)[OtherModule] in framework
service testtarget(vscode-icons:file-type-package)[TestTarget] in foundation
_framework:B -- T:_foundation
</pre>
<script type="module">
Expand All @@ -24,4 +22,4 @@
]);
</script>
</body>
</html>
</html>