Skip to content

Commit b78d25a

Browse files
Metrics: vend counters as strings to avoid making SWBProtocol part of the public interface for SwiftBuild
1 parent 49c22f9 commit b78d25a

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

Sources/SWBProtocol/BuildOperationMessages.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,10 @@ public struct BuildOperationMetrics: Equatable, Codable, Sendable {
558558
/// The key is the first component of task rule info, a.k.a. the rule info type
559559
public let taskCounters: [String: [TaskCounter: Int]]
560560

561+
public var isEmpty: Bool {
562+
counters.isEmpty && taskCounters.isEmpty
563+
}
564+
561565
public init(counters: [Counter : Int], taskCounters: [String: [TaskCounter: Int]]) {
562566
self.counters = counters
563567
self.taskCounters = taskCounters

Sources/SwiftBuild/ConsoleCommands/SWBServiceConsoleBuildCommandProtocol.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
public import Foundation
1616
public import SWBProjectModel
17-
public import SWBProtocol
1817

1918
import SWBUtil
2019

@@ -169,10 +168,10 @@ public enum SwiftBuildMessage {
169168
}
170169

171170
public struct BuildOperationMetrics {
172-
let counters: [SWBProtocol.BuildOperationMetrics.Counter: Int]
171+
public let counters: [String: Int]
173172

174173
/// The key is the first component of task rule info, a.k.a. the rule info type
175-
let taskCounters: [String: [SWBProtocol.BuildOperationMetrics.TaskCounter: Int]]
174+
public let taskCounters: [String: [String: Int]]
176175
}
177176

178177
public struct BuildCompletedInfo {

Sources/SwiftBuild/SWBuildMessage+Protocol.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ extension SwiftBuildMessage {
4747

4848
init(_ message: BuildOperationEnded) {
4949
let metrics: BuildOperationMetrics?
50-
if let messageMetrics = message.metrics, !messageMetrics.counters.isEmpty {
51-
metrics = .init(counters: messageMetrics.counters, taskCounters: messageMetrics.taskCounters)
50+
if let messageMetrics = message.metrics, !messageMetrics.isEmpty {
51+
metrics = .init(
52+
counters: Dictionary(uniqueKeysWithValues: messageMetrics.counters.map { ($0.key.rawValue, $0.value) }),
53+
taskCounters: messageMetrics.taskCounters.mapValues { Dictionary(uniqueKeysWithValues: $0.map { ($0.key.rawValue, $0.value) }) }
54+
)
5255
} else {
5356
metrics = nil
5457
}

0 commit comments

Comments
 (0)