From fb01a48f22c6bee74a38a9848fa35efcdbb9f544 Mon Sep 17 00:00:00 2001 From: Jason Morley Date: Thu, 13 Feb 2025 10:56:15 -1000 Subject: [PATCH] refactor: Move model into ReporterCore (#25) --- .../Model/Changes.swift | 12 ++++----- .../Model/KeyedChanges.swift | 12 ++++----- .../Model/Report.swift | 10 ++++--- .../Model/ReporterError.swift | 2 +- .../Model}/State.swift | 27 +++++++++++-------- 5 files changed, 36 insertions(+), 27 deletions(-) rename Sources/{reporter => ReporterCore}/Model/Changes.swift (86%) rename Sources/{reporter => ReporterCore}/Model/KeyedChanges.swift (87%) rename Sources/{reporter => ReporterCore}/Model/Report.swift (88%) rename Sources/{reporter => ReporterCore}/Model/ReporterError.swift (97%) rename Sources/{reporter => ReporterCore/Model}/State.swift (73%) diff --git a/Sources/reporter/Model/Changes.swift b/Sources/ReporterCore/Model/Changes.swift similarity index 86% rename from Sources/reporter/Model/Changes.swift rename to Sources/ReporterCore/Model/Changes.swift index 5b444ad..7719af8 100644 --- a/Sources/reporter/Model/Changes.swift +++ b/Sources/ReporterCore/Model/Changes.swift @@ -20,14 +20,14 @@ import Foundation -struct Changes: CustomStringConvertible { +public struct Changes: CustomStringConvertible { - let additions: [String] - let deletions: [String] + public let additions: [String] + public let deletions: [String] - let isEmpty: Bool + public let isEmpty: Bool - var description: String { + public var description: String { return ( "\(additions.count) additions\n" + additions @@ -42,7 +42,7 @@ struct Changes: CustomStringConvertible { ) } - init(additions: [String], deletions: [String]) { + public init(additions: [String], deletions: [String]) { self.additions = additions self.deletions = deletions self.isEmpty = additions.isEmpty && deletions.isEmpty diff --git a/Sources/reporter/Model/KeyedChanges.swift b/Sources/ReporterCore/Model/KeyedChanges.swift similarity index 87% rename from Sources/reporter/Model/KeyedChanges.swift rename to Sources/ReporterCore/Model/KeyedChanges.swift index efe725b..e4e641f 100644 --- a/Sources/reporter/Model/KeyedChanges.swift +++ b/Sources/ReporterCore/Model/KeyedChanges.swift @@ -20,14 +20,14 @@ import Foundation -struct KeyedChanges { +public struct KeyedChanges { - let url: URL - let changes: Changes - let name: String - let path: String + public let url: URL + public let changes: Changes + public let name: String + public let path: String - init(url: URL, changes: Changes) { + public init(url: URL, changes: Changes) { self.url = url self.changes = changes self.name = url.lastPathComponent diff --git a/Sources/reporter/Model/Report.swift b/Sources/ReporterCore/Model/Report.swift similarity index 88% rename from Sources/reporter/Model/Report.swift rename to Sources/ReporterCore/Model/Report.swift index cb5d142..54764e8 100644 --- a/Sources/reporter/Model/Report.swift +++ b/Sources/ReporterCore/Model/Report.swift @@ -20,14 +20,18 @@ import Foundation -struct Report { +public struct Report { - var isEmpty: Bool { + public var isEmpty: Bool { return folders.reduce(true) { partialResult, folder in return partialResult && folder.changes.isEmpty } } - var folders: [KeyedChanges] + public var folders: [KeyedChanges] + + public init(folders: [KeyedChanges]) { + self.folders = folders + } } diff --git a/Sources/reporter/Model/ReporterError.swift b/Sources/ReporterCore/Model/ReporterError.swift similarity index 97% rename from Sources/reporter/Model/ReporterError.swift rename to Sources/ReporterCore/Model/ReporterError.swift index dcfa463..7fb69c7 100644 --- a/Sources/reporter/Model/ReporterError.swift +++ b/Sources/ReporterCore/Model/ReporterError.swift @@ -20,6 +20,6 @@ import Foundation -enum ReporterError: Error { +public enum ReporterError: Error { case failed } diff --git a/Sources/reporter/State.swift b/Sources/ReporterCore/Model/State.swift similarity index 73% rename from Sources/reporter/State.swift rename to Sources/ReporterCore/Model/State.swift index 096b29d..c480860 100644 --- a/Sources/reporter/State.swift +++ b/Sources/ReporterCore/Model/State.swift @@ -20,26 +20,31 @@ import Foundation -struct State: Codable { +public struct State: Codable { - struct Item: Codable, Hashable { - let path: String - let checksum: Data? + public struct Item: Codable, Hashable, Sendable { + public let path: String + public let checksum: Data? + + public init(path: String, checksum: Data?) { + self.path = path + self.checksum = checksum + } } - struct Snapshot: Codable { + public struct Snapshot: Codable { - var description: String { + public var description: String { return "\(items.count) files" } - let items: Set + public let items: Set - init(items: [Item] = []) { + public init(items: [Item] = []) { self.items = Set(items) } - func changes(from initialState: Snapshot) -> Changes { + public func changes(from initialState: Snapshot) -> Changes { let additions = items.subtracting(initialState.items) let deletions = initialState.items.subtracting(items) return Changes( @@ -50,9 +55,9 @@ struct State: Codable { } - var snapshots: [URL: Snapshot] + public var snapshots: [URL: Snapshot] - init() { + public init() { self.snapshots = [:] }