summaryrefslogtreecommitdiff
path: root/Hutch/Models/Builds.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-03-18 20:23:58 -0500
committerChristian Cleberg <[email protected]>2026-03-18 20:23:58 -0500
commitc41cd437acde4e4f4c0781cebd4d5f4bf9517bb9 (patch)
tree28bf13b89e36774720d015a26a8979b567ad0be9 /Hutch/Models/Builds.swift
parent1745311950fd68ad81957b3ba64f8566cd86ce19 (diff)
parent4dd920558a1c7174c0e9a5b872325df36e363516 (diff)
downloadhutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.gz
hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.tar.bz2
hutch-c41cd437acde4e4f4c0781cebd4d5f4bf9517bb9.zip
v1.2: Merge branch 'dev'
Diffstat (limited to 'Hutch/Models/Builds.swift')
-rw-r--r--Hutch/Models/Builds.swift27
1 files changed, 25 insertions, 2 deletions
diff --git a/Hutch/Models/Builds.swift b/Hutch/Models/Builds.swift
index 6694c35..b0c0e8d 100644
--- a/Hutch/Models/Builds.swift
+++ b/Hutch/Models/Builds.swift
@@ -34,10 +34,33 @@ enum TaskStatus: String, Codable, Sendable {
/// A single task within a build job.
struct BuildTask: Codable, Sendable, Identifiable {
- var id: String { name }
+ private(set) var ordinal: Int?
let name: String
let status: TaskStatus
let log: BuildLog?
+
+ var id: String {
+ if let ordinal {
+ return "\(ordinal):\(name)"
+ }
+ return [name, log?.fullURL, status.rawValue]
+ .compactMap { $0 }
+ .joined(separator: "::")
+ }
+
+ var logCacheKey: String {
+ id
+ }
+
+ func withOrdinal(_ ordinal: Int) -> BuildTask {
+ var task = self
+ task.ordinal = ordinal
+ return task
+ }
+
+ private enum CodingKeys: String, CodingKey {
+ case name, status, log
+ }
}
// MARK: - Job Summary (for list view)
@@ -90,7 +113,7 @@ struct JobDetail: Codable, Sendable {
let visibility: Visibility?
let image: String?
let manifest: String?
- let tasks: [BuildTask]
+ var tasks: [BuildTask]
let log: BuildLog?
let owner: Entity
}