feat: Sets up ci workflows
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user