From 415c58c5ef0b7179bce8323ccaa26a8ebf04c725 Mon Sep 17 00:00:00 2001 From: Daniel Jankowski Date: Mon, 16 Oct 2023 14:20:22 +0200 Subject: [PATCH] Add IDEActivityLogActionMessage support Signed-off-by: Daniel Jankowski --- .../activityparser/ActivityParser.swift | 21 +++++++++ .../activityparser/IDEActivityModel.swift | 45 +++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/Sources/XCLogParser/activityparser/ActivityParser.swift b/Sources/XCLogParser/activityparser/ActivityParser.swift index 58fd3c7..b3927bc 100644 --- a/Sources/XCLogParser/activityparser/ActivityParser.swift +++ b/Sources/XCLogParser/activityparser/ActivityParser.swift @@ -234,6 +234,24 @@ public class ActivityParser { endLocation: try parseDocumentLocation(iterator: &iterator)) } + public func parseIDEActivityLogActionMessage(iterator: inout IndexingIterator<[Token]>) throws + -> IDEActivityLogActionMessage { + return IDEActivityLogActionMessage( + title: try parseAsString(token: iterator.next()), + shortTitle: try parseAsString(token: iterator.next()), + timeEmitted: try Double(parseAsInt(token: iterator.next())), + rangeEndInSectionText: try parseAsInt(token: iterator.next()), + rangeStartInSectionText: try parseAsInt(token: iterator.next()), + subMessages: try parseMessages(iterator: &iterator), + severity: Int(try parseAsInt(token: iterator.next())), + type: try parseAsString(token: iterator.next()), + location: try parseDocumentLocation(iterator: &iterator), + categoryIdent: try parseAsString(token: iterator.next()), + secondaryLocations: try parseDocumentLocations(iterator: &iterator), + additionalDescription: try parseAsString(token: iterator.next()), + action: try parseAsString(token: iterator.next())) + } + private func getTokens(_ logURL: URL, redacted: Bool, withoutBuildSpecificInformation: Bool) throws -> [Token] { @@ -337,6 +355,9 @@ public class ActivityParser { if className == String(describing: IDEActivityLogAnalyzerEventStepMessage.self) { return try parseIDEActivityLogAnalyzerEventStepMessage(iterator: &iterator) } + if className == String(describing: IDEActivityLogActionMessage.self) { + return try parseIDEActivityLogActionMessage(iterator: &iterator) + } throw XCLogParserError.parseError("Unexpected className found parsing IDEActivityLogMessage \(className)") } diff --git a/Sources/XCLogParser/activityparser/IDEActivityModel.swift b/Sources/XCLogParser/activityparser/IDEActivityModel.swift index 2a092d1..bbd1069 100644 --- a/Sources/XCLogParser/activityparser/IDEActivityModel.swift +++ b/Sources/XCLogParser/activityparser/IDEActivityModel.swift @@ -521,6 +521,51 @@ public class IDEActivityLogAnalyzerEventStepMessage: IDEActivityLogMessage { } } +public class IDEActivityLogActionMessage: IDEActivityLogMessage { + + public let action: String + + public init(title: String, + shortTitle: String, + timeEmitted: Double, + rangeEndInSectionText: UInt64, + rangeStartInSectionText: UInt64, + subMessages: [IDEActivityLogMessage], + severity: Int, + type: String, + location: DVTDocumentLocation, + categoryIdent: String, + secondaryLocations: [DVTDocumentLocation], + additionalDescription: String, + action: String) { + + self.action = action + + super.init(title: title, + shortTitle: shortTitle, + timeEmitted: timeEmitted, + rangeEndInSectionText: rangeEndInSectionText, + rangeStartInSectionText: rangeStartInSectionText, + subMessages: subMessages, + severity: severity, + type: type, + location: location, + categoryIdent: categoryIdent, + secondaryLocations: secondaryLocations, + additionalDescription: additionalDescription) + } + + private enum CodingKeys: String, CodingKey { + case action + } + + override public func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(action, forKey: .action) + } +} + // MARK: IDEInterfaceBuilderKit public class IBMemberID: Encodable {