Skip to content

Commit b16aac0

Browse files
committed
Move to SwiftLogger
1 parent 20312a2 commit b16aac0

13 files changed

Lines changed: 80 additions & 103 deletions

File tree

Package.resolved

Lines changed: 11 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,16 @@ let targets: [PackageDescription.Target] = [
2828
"TestConfigurator",
2929
"Git",
3030
"PathKit",
31-
"Rainbow",
3231
"Yams",
3332
.product(name: "ArgumentParser", package: "swift-argument-parser")]),
3433
.target(name: "DependencyCalculator",
35-
dependencies: ["Workspace", "PathKit", "SelectiveTestLogger", "Git"]),
34+
dependencies: ["Workspace", "PathKit", "Git", .product(name: "Logging", package: "swift-log")]),
3635
.target(name: "TestConfigurator",
37-
dependencies: ["Workspace", "PathKit", "SelectiveTestLogger"]),
36+
dependencies: ["Workspace", "PathKit", .product(name: "Logging", package: "swift-log")]),
3837
.target(name: "Workspace",
39-
dependencies: ["XcodeProj", "SelectiveTestLogger"]),
38+
dependencies: ["XcodeProj", .product(name: "Logging", package: "swift-log")]),
4039
.target(name: "Git",
41-
dependencies: ["SelectiveTestShell", "SelectiveTestLogger", "PathKit"]),
42-
.target(name: "SelectiveTestLogger",
43-
dependencies: ["Rainbow"]),
40+
dependencies: ["SelectiveTestShell", "PathKit", .product(name: "Logging", package: "swift-log")]),
4441
.target(name: "SelectiveTestShell"),
4542
.testTarget(
4643
name: "SelectiveTestingTests",
@@ -77,8 +74,8 @@ let package = Package(
7774
.package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "9.0.2")),
7875
.package(url: "https://github.com/apple/swift-argument-parser.git", .upToNextMajor(from: "1.2.0")),
7976
.package(url: "https://github.com/kylef/PathKit.git", .upToNextMinor(from: "1.0.0")),
80-
.package(url: "https://github.com/onevcat/Rainbow", .upToNextMajor(from: "4.0.0")),
8177
.package(url: "https://github.com/jpsim/Yams.git", from: "5.0.5"),
78+
.package(url: "https://github.com/apple/swift-log", from: "1.6.0")
8279
],
8380
targets: targets
8481
)

Sources/DependencyCalculator/ConcurrentMap.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import Foundation
66

7-
final class ThreadSafe<A> {
7+
final class ThreadSafe<A: Sendable>: @unchecked Sendable {
88
private var _value: A
99
private let queue = DispatchQueue(label: "ThreadSafe")
1010
init(_ value: A) {
@@ -22,8 +22,8 @@ final class ThreadSafe<A> {
2222
}
2323
}
2424

25-
extension Array {
26-
func concurrentMap<B>(_ transform: @escaping (Element) -> B) -> [B] {
25+
extension Array where Element: Sendable {
26+
func concurrentMap<B: Sendable>(_ transform: @escaping @Sendable (Element) -> B) -> [B] {
2727
let result = ThreadSafe([B?](repeating: nil, count: count))
2828
DispatchQueue.concurrentPerform(iterations: count) { idx in
2929
let element = self[idx]

Sources/DependencyCalculator/DependencyCalculator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import Foundation
66
import PathKit
7-
import SelectiveTestLogger
7+
import Logging
88
import Workspace
99

1010
public extension WorkspaceInfo {
@@ -18,7 +18,7 @@ public extension WorkspaceInfo {
1818
} else if let targetFromFolder = targetForFolder(path) {
1919
result.insert(targetFromFolder)
2020
} else {
21-
Logger.message("Changed file at \(path) appears not to belong to any target")
21+
logger.info("Changed file at \(path) appears not to belong to any target")
2222
}
2323
}
2424
if incldueIndirectlyAffected {

Sources/DependencyCalculator/DependencyGraph.swift

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@
44

55
import Foundation
66
import Git
7-
import PathKit
8-
import SelectiveTestLogger
7+
@preconcurrency import PathKit
8+
import Logging
99
import SelectiveTestShell
1010
import Workspace
1111
import XcodeProj
1212

13+
let logger = Logger(label: "cx.gera.XcodeSelectiveTesting")
14+
1315
extension PBXBuildFile {
1416
func paths(projectFolder: Path) -> [Path] {
1517
guard let file else {
16-
Logger.warning("PBXBuildFile without file: self=\(self), \n self.product=\(String(describing: product))")
18+
logger.warning("PBXBuildFile without file: self=\(self), \n self.product=\(String(describing: product))")
1719
return []
1820
}
1921

@@ -29,7 +31,7 @@ extension PBXBuildFile {
2931
}
3032

3133
guard paths.count > 0 else {
32-
Logger.warning("File without paths: self=\(self), \n self.file=\(String(describing: file)), \n self.product=\(String(describing: product))")
34+
logger.warning("File without paths: self=\(self), \n self.file=\(String(describing: file)), \n self.product=\(String(describing: product))")
3335
return []
3436
}
3537

@@ -176,12 +178,12 @@ extension WorkspaceInfo {
176178

177179
for (targetName, dependOnTargets) in config.dependencies {
178180
guard let target = allTargets[targetName] else {
179-
Logger.error("Config: Cannot resolve \(targetName) to any known target")
181+
logger.error("Config: Cannot resolve \(targetName) to any known target")
180182
continue
181183
}
182184
for dependOnTargetName in dependOnTargets {
183185
guard let targetDependOn = allTargets[dependOnTargetName] else {
184-
Logger.error("Config: Cannot resolve \(dependOnTargetName) to any known target")
186+
logger.error("Config: Cannot resolve \(dependOnTargetName) to any known target")
185187
continue
186188
}
187189

@@ -193,15 +195,15 @@ extension WorkspaceInfo {
193195

194196
for (targetName, filesToAdd) in config.targetsFiles {
195197
guard let target = allTargets[targetName] else {
196-
Logger.error("Config: Cannot resolve \(targetName) to any known target")
198+
logger.error("Config: Cannot resolve \(targetName) to any known target")
197199
continue
198200
}
199201

200202
for filePath in filesToAdd {
201203
let path = (basePath + filePath).absolute()
202204

203205
guard path.exists else {
204-
Logger.error("Config: Path \(path) does not exist")
206+
logger.error("Config: Path \(path) does not exist")
205207
continue
206208
}
207209

@@ -272,7 +274,7 @@ extension WorkspaceInfo {
272274

273275
for affectedByPath in metadata.affectedBy {
274276
guard affectedByPath.exists else {
275-
Logger.warning("Path \(affectedByPath) is mentioned from package at \(metadata.path) but does not exist")
277+
logger.warning("Path \(affectedByPath) is mentioned from package at \(metadata.path) but does not exist")
276278
continue
277279
}
278280

@@ -309,7 +311,7 @@ extension WorkspaceInfo {
309311
let absolutePath = path.parent() + localPackage.relativePath
310312

311313
guard let newPackages = try? PackageTargetMetadata.parse(at: absolutePath) else {
312-
Logger.warning("Cannot find local package at \(absolutePath)")
314+
logger.warning("Cannot find local package at \(absolutePath)")
313315
return
314316
}
315317
for package in newPackages {
@@ -323,15 +325,15 @@ extension WorkspaceInfo {
323325
// Target dependencies
324326
for dependency in target.dependencies {
325327
guard let name = dependency.target?.name else {
326-
Logger.warning("Target without name: \(dependency)")
328+
logger.warning("Target without name: \(dependency)")
327329
continue
328330
}
329331

330332
if let dependencyTarget = targetsByName[name] {
331333
dependsOn.insert(targetIdentity,
332334
dependOn: TargetIdentity.project(path: path, target: dependencyTarget))
333335
} else {
334-
Logger.warning("Unknown target: \(name)")
336+
logger.warning("Unknown target: \(name)")
335337
dependsOn.insert(targetIdentity,
336338
dependOn: TargetIdentity.project(path: path, targetName: name, testTarget: false))
337339
}
@@ -341,7 +343,7 @@ extension WorkspaceInfo {
341343
for packageDependency in (target.packageProductDependencies ?? []) {
342344
let package = packageDependency.productName
343345
guard let packageMetadata = packagesByName[package] else {
344-
Logger.warning("Package \(package) not found")
346+
logger.warning("Package \(package) not found")
345347
continue
346348
}
347349
dependsOn.insert(targetIdentity,

Sources/DependencyCalculator/PackageMetadata.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
//
44

55
import Foundation
6-
import PathKit
7-
import SelectiveTestLogger
6+
@preconcurrency import PathKit
7+
import Logging
88
import SelectiveTestShell
99
import Workspace
1010

11-
struct PackageTargetMetadata {
11+
struct PackageTargetMetadata: Sendable {
1212
let path: Path
1313
let affectedBy: Set<Path>
1414
let name: String

Sources/Git/Git+Changeset.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,23 @@
44

55
import Foundation
66
import PathKit
7-
import SelectiveTestLogger
7+
import Logging
88
import SelectiveTestShell
99

10+
let logger = Logger(label: "cx.gera.XcodeSelectiveTesting")
11+
1012
public extension Git {
1113
func changeset(baseBranch: String, verbose: Bool = false) throws -> Set<Path> {
1214
let gitRoot = try repoRoot()
1315

1416
var currentBranch = try Shell.execOrFail("(cd \(gitRoot) && git branch --show-current)").trimmingCharacters(in: .newlines)
1517
if verbose {
16-
Logger.message("Current branch: \(currentBranch)")
17-
Logger.message("Base branch: \(baseBranch)")
18+
logger.info("Current branch: \(currentBranch)")
19+
logger.info("Base branch: \(baseBranch)")
1820
}
1921

2022
if currentBranch.isEmpty {
21-
Logger.warning("Missing current branch at \(path)")
23+
logger.warning("Missing current branch at \(path)")
2224

2325
currentBranch = "HEAD"
2426
}

Sources/SelectiveTestLogger/Logger.swift

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)