Merge pull request #147 from provTheodoreNewell/teddy/releseDateInInfoPane

Enhancement: Add Xcode release date to info pane in Xcodes.app
This commit is contained in:
Matt Kiazyk 2021-08-18 16:54:59 -05:00 committed by GitHub
commit 6e6c2b0081
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 0 deletions

View file

@ -522,6 +522,7 @@ class AppState: ObservableObject {
icon: (installedXcode?.path.string).map(NSWorkspace.shared.icon(forFile:)),
requiredMacOSVersion: availableXcode.requiredMacOSVersion,
releaseNotesURL: availableXcode.releaseNotesURL,
releaseDate: availableXcode.releaseDate,
sdks: availableXcode.sdks,
compilers: availableXcode.compilers,
downloadFileSize: availableXcode.fileSize

View file

@ -13,6 +13,7 @@ struct Xcode: Identifiable, CustomStringConvertible {
let icon: NSImage?
let requiredMacOSVersion: String?
let releaseNotesURL: URL?
let releaseDate: Date?
let sdks: SDKs?
let compilers: Compilers?
let downloadFileSize: Int64?
@ -25,6 +26,7 @@ struct Xcode: Identifiable, CustomStringConvertible {
icon: NSImage?,
requiredMacOSVersion: String? = nil,
releaseNotesURL: URL? = nil,
releaseDate: Date? = nil,
sdks: SDKs? = nil,
compilers: Compilers? = nil,
downloadFileSize: Int64? = nil
@ -36,6 +38,7 @@ struct Xcode: Identifiable, CustomStringConvertible {
self.icon = icon
self.requiredMacOSVersion = requiredMacOSVersion
self.releaseNotesURL = releaseNotesURL
self.releaseDate = releaseDate
self.sdks = sdks
self.compilers = compilers
self.downloadFileSize = downloadFileSize

View file

@ -55,6 +55,7 @@ struct InfoPane: View {
Group{
releaseNotes(for: xcode)
releaseDate(for: xcode)
identicalBuilds(for: xcode)
compatibility(for: xcode)
sdks(for: xcode)
@ -111,6 +112,22 @@ struct InfoPane: View {
EmptyView()
}
}
@ViewBuilder
private func releaseDate(for xcode: Xcode) -> some View {
if let releaseDate = xcode.releaseDate {
VStack(alignment: .leading) {
Text("Release Date")
.font(.headline)
.frame(maxWidth: .infinity, alignment: .leading)
Text(DateFormatter.downloadsReleaseDate.string(from: releaseDate))
.font(.subheadline)
.frame(maxWidth: .infinity, alignment: .leading)
}
} else {
EmptyView()
}
}
@ViewBuilder
private func releaseNotes(for xcode: Xcode) -> some View {
@ -235,6 +252,7 @@ struct InfoPane_Previews: PreviewProvider {
icon: NSWorkspace.shared.icon(forFile: "/Applications/Xcode-12.3.0.app"),
requiredMacOSVersion: "10.15.4",
releaseNotesURL: URL(string: "https://developer.apple.com/documentation/xcode-release-notes/xcode-12_3-release-notes/")!,
releaseDate: Date(),
sdks: SDKs(
macOS: .init(number: "11.1"),
iOS: .init(number: "14.3"),