feat: Sets up ci workflows

This commit is contained in:
2025-01-24 20:19:43 -05:00
parent 000f8ce16b
commit d1e2f37629
16 changed files with 200 additions and 73 deletions

View File

@@ -1,28 +1,53 @@
import Dependencies
import DependenciesMacros
import Foundation
public extension DependencyValues {
var dateFormatter: DateFormatter {
get { self[DateFormatter.self] }
set { self[DateFormatter.self] = newValue }
var dateFormatter: DateFormatterKey {
get { self[DateFormatterKey.self] }
set { self[DateFormatterKey.self] = newValue }
}
}
#if hasFeature(RetroactiveAttribute)
extension DateFormatter: @retroactive DependencyKey {
@DependencyClient
public struct DateFormatterKey: Sendable {
public var string: @Sendable (Date?) -> String = { _ in "N/A" }
}
public static var liveValue: DateFormatter {
let formatter = DateFormatter()
formatter.dateStyle = .short
return formatter
}
extension DateFormatterKey: DependencyKey {
public static let testValue = Self()
public static var liveValue: DateFormatterKey {
.init(
string: { date in
guard let date else { return "N/A" }
let formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.formatOptions = [.withFullDate]
return formatter.string(from: date)
}
)
}
#else
extension DateFormatter: DependencyKey {
public static var liveValue: DateFormatter {
let formatter = DateFormatter()
formatter.dateStyle = .short
return formatter
}
}
#endif
}
// #if hasFeature(RetroactiveAttribute)
// extension DateFormatter: @retroactive DependencyKey {
//
// public static var liveValue: DateFormatter {
// let formatter = DateFormatter()
// formatter.dateStyle = .short
// return formatter
// }
// }
// #else
// extension DateFormatter: DependencyKey {
// public static var liveValue: DateFormatter {
// let formatter = ISO8601DateFormatter()
// formatter.locale = Locale(identifier: "en_US_POSIX")
// // formatter.dateFormat = "mm/dd/yyyy"
// formatter.formatOptions = [.withFullDate]
// formatter.timeZone = TimeZone(identifier: "UTC")
// return formatter
// }
// }
// #endif