mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-04-25 14:47:38 +00:00
Split up Models.swift
This commit is contained in:
parent
293aef80e3
commit
f06d72f3eb
4 changed files with 48 additions and 34 deletions
|
|
@ -21,6 +21,8 @@
|
||||||
CA9FF86D25951C6E00E47BAF /* XCModel in Frameworks */ = {isa = PBXBuildFile; productRef = CA9FF86C25951C6E00E47BAF /* XCModel */; };
|
CA9FF86D25951C6E00E47BAF /* XCModel in Frameworks */ = {isa = PBXBuildFile; productRef = CA9FF86C25951C6E00E47BAF /* XCModel */; };
|
||||||
CA9FF877259528CC00E47BAF /* Version+XcodeReleases.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF876259528CC00E47BAF /* Version+XcodeReleases.swift */; };
|
CA9FF877259528CC00E47BAF /* Version+XcodeReleases.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF876259528CC00E47BAF /* Version+XcodeReleases.swift */; };
|
||||||
CA9FF87B2595293E00E47BAF /* DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF87A2595293E00E47BAF /* DataSource.swift */; };
|
CA9FF87B2595293E00E47BAF /* DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF87A2595293E00E47BAF /* DataSource.swift */; };
|
||||||
|
CA9FF88125955C7000E47BAF /* AvailableXcode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF88025955C7000E47BAF /* AvailableXcode.swift */; };
|
||||||
|
CA9FF8872595607900E47BAF /* InstalledXcode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FF8862595607900E47BAF /* InstalledXcode.swift */; };
|
||||||
CAA1CB2D255A5262003FD669 /* AppleAPI in Frameworks */ = {isa = PBXBuildFile; productRef = CAA1CB2C255A5262003FD669 /* AppleAPI */; };
|
CAA1CB2D255A5262003FD669 /* AppleAPI in Frameworks */ = {isa = PBXBuildFile; productRef = CAA1CB2C255A5262003FD669 /* AppleAPI */; };
|
||||||
CAA1CB35255A5AD5003FD669 /* SignInCredentialsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA1CB34255A5AD5003FD669 /* SignInCredentialsView.swift */; };
|
CAA1CB35255A5AD5003FD669 /* SignInCredentialsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA1CB34255A5AD5003FD669 /* SignInCredentialsView.swift */; };
|
||||||
CAA1CB45255A5B60003FD669 /* SignIn2FAView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA1CB44255A5B60003FD669 /* SignIn2FAView.swift */; };
|
CAA1CB45255A5B60003FD669 /* SignIn2FAView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAA1CB44255A5B60003FD669 /* SignIn2FAView.swift */; };
|
||||||
|
|
@ -31,7 +33,7 @@
|
||||||
CABFA9BF2592EEEA00380FEE /* URLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B32592EEEA00380FEE /* URLSession+Promise.swift */; };
|
CABFA9BF2592EEEA00380FEE /* URLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B32592EEEA00380FEE /* URLSession+Promise.swift */; };
|
||||||
CABFA9C12592EEEA00380FEE /* Version+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9A82592EEE900380FEE /* Version+.swift */; };
|
CABFA9C12592EEEA00380FEE /* Version+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9A82592EEE900380FEE /* Version+.swift */; };
|
||||||
CABFA9C22592EEEA00380FEE /* Promise+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B02592EEEA00380FEE /* Promise+.swift */; };
|
CABFA9C22592EEEA00380FEE /* Promise+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B02592EEEA00380FEE /* Promise+.swift */; };
|
||||||
CABFA9C32592EEEA00380FEE /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B92592EEEA00380FEE /* Models.swift */; };
|
CABFA9C32592EEEA00380FEE /* Downloads.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B92592EEEA00380FEE /* Downloads.swift */; };
|
||||||
CABFA9C52592EEEA00380FEE /* FileManager+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B82592EEEA00380FEE /* FileManager+.swift */; };
|
CABFA9C52592EEEA00380FEE /* FileManager+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B82592EEEA00380FEE /* FileManager+.swift */; };
|
||||||
CABFA9C72592EEEA00380FEE /* Entry+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B22592EEEA00380FEE /* Entry+.swift */; };
|
CABFA9C72592EEEA00380FEE /* Entry+.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9B22592EEEA00380FEE /* Entry+.swift */; };
|
||||||
CABFA9C92592EEEA00380FEE /* URLRequest+Apple.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9AB2592EEE900380FEE /* URLRequest+Apple.swift */; };
|
CABFA9C92592EEEA00380FEE /* URLRequest+Apple.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABFA9AB2592EEE900380FEE /* URLRequest+Apple.swift */; };
|
||||||
|
|
@ -87,6 +89,8 @@
|
||||||
CA9FF8652595130600E47BAF /* View+IsHidden.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+IsHidden.swift"; sourceTree = "<group>"; };
|
CA9FF8652595130600E47BAF /* View+IsHidden.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+IsHidden.swift"; sourceTree = "<group>"; };
|
||||||
CA9FF876259528CC00E47BAF /* Version+XcodeReleases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Version+XcodeReleases.swift"; sourceTree = "<group>"; };
|
CA9FF876259528CC00E47BAF /* Version+XcodeReleases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Version+XcodeReleases.swift"; sourceTree = "<group>"; };
|
||||||
CA9FF87A2595293E00E47BAF /* DataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSource.swift; sourceTree = "<group>"; };
|
CA9FF87A2595293E00E47BAF /* DataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSource.swift; sourceTree = "<group>"; };
|
||||||
|
CA9FF88025955C7000E47BAF /* AvailableXcode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvailableXcode.swift; sourceTree = "<group>"; };
|
||||||
|
CA9FF8862595607900E47BAF /* InstalledXcode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledXcode.swift; sourceTree = "<group>"; };
|
||||||
CAA1CB34255A5AD5003FD669 /* SignInCredentialsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInCredentialsView.swift; sourceTree = "<group>"; };
|
CAA1CB34255A5AD5003FD669 /* SignInCredentialsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInCredentialsView.swift; sourceTree = "<group>"; };
|
||||||
CAA1CB44255A5B60003FD669 /* SignIn2FAView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignIn2FAView.swift; sourceTree = "<group>"; };
|
CAA1CB44255A5B60003FD669 /* SignIn2FAView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignIn2FAView.swift; sourceTree = "<group>"; };
|
||||||
CAA1CB48255A5C97003FD669 /* SignInSMSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInSMSView.swift; sourceTree = "<group>"; };
|
CAA1CB48255A5C97003FD669 /* SignInSMSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInSMSView.swift; sourceTree = "<group>"; };
|
||||||
|
|
@ -106,7 +110,7 @@
|
||||||
CABFA9B32592EEEA00380FEE /* URLSession+Promise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+Promise.swift"; sourceTree = "<group>"; };
|
CABFA9B32592EEEA00380FEE /* URLSession+Promise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+Promise.swift"; sourceTree = "<group>"; };
|
||||||
CABFA9B42592EEEA00380FEE /* Process.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Process.swift; sourceTree = "<group>"; };
|
CABFA9B42592EEEA00380FEE /* Process.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Process.swift; sourceTree = "<group>"; };
|
||||||
CABFA9B82592EEEA00380FEE /* FileManager+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+.swift"; sourceTree = "<group>"; };
|
CABFA9B82592EEEA00380FEE /* FileManager+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+.swift"; sourceTree = "<group>"; };
|
||||||
CABFA9B92592EEEA00380FEE /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = "<group>"; };
|
CABFA9B92592EEEA00380FEE /* Downloads.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Downloads.swift; sourceTree = "<group>"; };
|
||||||
CABFA9BA2592EEEA00380FEE /* DateFormatter+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+.swift"; sourceTree = "<group>"; };
|
CABFA9BA2592EEEA00380FEE /* DateFormatter+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+.swift"; sourceTree = "<group>"; };
|
||||||
CABFA9D42592EF6300380FEE /* DECISIONS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = DECISIONS.md; sourceTree = "<group>"; };
|
CABFA9D42592EF6300380FEE /* DECISIONS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = DECISIONS.md; sourceTree = "<group>"; };
|
||||||
CABFAA2A2592FBFC00380FEE /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingsView.swift; path = Xcodes/SettingsView.swift; sourceTree = SOURCE_ROOT; };
|
CABFAA2A2592FBFC00380FEE /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SettingsView.swift; path = Xcodes/SettingsView.swift; sourceTree = SOURCE_ROOT; };
|
||||||
|
|
@ -205,15 +209,17 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
CA378F982466567600A58CE0 /* AppState.swift */,
|
CA378F982466567600A58CE0 /* AppState.swift */,
|
||||||
|
CA9FF88025955C7000E47BAF /* AvailableXcode.swift */,
|
||||||
CABFAA2B2592FBFC00380FEE /* Configure.swift */,
|
CABFAA2B2592FBFC00380FEE /* Configure.swift */,
|
||||||
CABFAA482593162500380FEE /* Bundle+InfoPlistValues.swift */,
|
CABFAA482593162500380FEE /* Bundle+InfoPlistValues.swift */,
|
||||||
CA9FF87A2595293E00E47BAF /* DataSource.swift */,
|
CA9FF87A2595293E00E47BAF /* DataSource.swift */,
|
||||||
CABFA9BA2592EEEA00380FEE /* DateFormatter+.swift */,
|
CABFA9BA2592EEEA00380FEE /* DateFormatter+.swift */,
|
||||||
|
CABFA9B92592EEEA00380FEE /* Downloads.swift */,
|
||||||
CABFA9B22592EEEA00380FEE /* Entry+.swift */,
|
CABFA9B22592EEEA00380FEE /* Entry+.swift */,
|
||||||
CABFA9A92592EEE900380FEE /* Environment.swift */,
|
CABFA9A92592EEE900380FEE /* Environment.swift */,
|
||||||
CABFA9B82592EEEA00380FEE /* FileManager+.swift */,
|
CABFA9B82592EEEA00380FEE /* FileManager+.swift */,
|
||||||
CABFA9AC2592EEE900380FEE /* Foundation.swift */,
|
CABFA9AC2592EEE900380FEE /* Foundation.swift */,
|
||||||
CABFA9B92592EEEA00380FEE /* Models.swift */,
|
CA9FF8862595607900E47BAF /* InstalledXcode.swift */,
|
||||||
CABFA9AE2592EEE900380FEE /* Path+.swift */,
|
CABFA9AE2592EEE900380FEE /* Path+.swift */,
|
||||||
CABFA9B42592EEEA00380FEE /* Process.swift */,
|
CABFA9B42592EEEA00380FEE /* Process.swift */,
|
||||||
CABFA9B02592EEEA00380FEE /* Promise+.swift */,
|
CABFA9B02592EEEA00380FEE /* Promise+.swift */,
|
||||||
|
|
@ -460,12 +466,13 @@
|
||||||
CABFA9BF2592EEEA00380FEE /* URLSession+Promise.swift in Sources */,
|
CABFA9BF2592EEEA00380FEE /* URLSession+Promise.swift in Sources */,
|
||||||
CABFA9BB2592EEEA00380FEE /* DateFormatter+.swift in Sources */,
|
CABFA9BB2592EEEA00380FEE /* DateFormatter+.swift in Sources */,
|
||||||
CABFA9BD2592EEEA00380FEE /* Environment.swift in Sources */,
|
CABFA9BD2592EEEA00380FEE /* Environment.swift in Sources */,
|
||||||
CABFA9C32592EEEA00380FEE /* Models.swift in Sources */,
|
CABFA9C32592EEEA00380FEE /* Downloads.swift in Sources */,
|
||||||
CA378F992466567600A58CE0 /* AppState.swift in Sources */,
|
CA378F992466567600A58CE0 /* AppState.swift in Sources */,
|
||||||
CAD2E7A42449574E00113D76 /* XcodeListView.swift in Sources */,
|
CAD2E7A42449574E00113D76 /* XcodeListView.swift in Sources */,
|
||||||
CAA1CB45255A5B60003FD669 /* SignIn2FAView.swift in Sources */,
|
CAA1CB45255A5B60003FD669 /* SignIn2FAView.swift in Sources */,
|
||||||
CABFA9C52592EEEA00380FEE /* FileManager+.swift in Sources */,
|
CABFA9C52592EEEA00380FEE /* FileManager+.swift in Sources */,
|
||||||
CABFA9CD2592EEEA00380FEE /* Foundation.swift in Sources */,
|
CABFA9CD2592EEEA00380FEE /* Foundation.swift in Sources */,
|
||||||
|
CA9FF8872595607900E47BAF /* InstalledXcode.swift in Sources */,
|
||||||
CA9FF84E2595079F00E47BAF /* ScrollingTextView.swift in Sources */,
|
CA9FF84E2595079F00E47BAF /* ScrollingTextView.swift in Sources */,
|
||||||
CABFA9C12592EEEA00380FEE /* Version+.swift in Sources */,
|
CABFA9C12592EEEA00380FEE /* Version+.swift in Sources */,
|
||||||
CA9FF8522595080100E47BAF /* AcknowledgementsView.swift in Sources */,
|
CA9FF8522595080100E47BAF /* AcknowledgementsView.swift in Sources */,
|
||||||
|
|
@ -488,6 +495,7 @@
|
||||||
63EAA4EB259944450046AB8F /* ProgressButton.swift in Sources */,
|
63EAA4EB259944450046AB8F /* ProgressButton.swift in Sources */,
|
||||||
CA5D781E257365D6008EDE9D /* PinCodeTextView.swift in Sources */,
|
CA5D781E257365D6008EDE9D /* PinCodeTextView.swift in Sources */,
|
||||||
CA39711924495F0E00AFFB77 /* AppStoreButtonStyle.swift in Sources */,
|
CA39711924495F0E00AFFB77 /* AppStoreButtonStyle.swift in Sources */,
|
||||||
|
CA9FF88125955C7000E47BAF /* AvailableXcode.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
17
Xcodes/Backend/AvailableXcode.swift
Normal file
17
Xcodes/Backend/AvailableXcode.swift
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
import Foundation
|
||||||
|
import Version
|
||||||
|
|
||||||
|
/// A version of Xcode that's available for installation
|
||||||
|
public struct AvailableXcode: Codable {
|
||||||
|
public let version: Version
|
||||||
|
public let url: URL
|
||||||
|
public let filename: String
|
||||||
|
public let releaseDate: Date?
|
||||||
|
|
||||||
|
public init(version: Version, url: URL, filename: String, releaseDate: Date?) {
|
||||||
|
self.version = version
|
||||||
|
self.url = url
|
||||||
|
self.filename = filename
|
||||||
|
self.releaseDate = releaseDate
|
||||||
|
}
|
||||||
|
}
|
||||||
17
Xcodes/Backend/Downloads.swift
Normal file
17
Xcodes/Backend/Downloads.swift
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
import Foundation
|
||||||
|
import Path
|
||||||
|
import Version
|
||||||
|
|
||||||
|
struct Downloads: Codable {
|
||||||
|
let downloads: [Download]
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct Download: Codable {
|
||||||
|
public let name: String
|
||||||
|
public let files: [File]
|
||||||
|
public let dateModified: Date
|
||||||
|
|
||||||
|
public struct File: Codable {
|
||||||
|
public let remotePath: String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import Path
|
|
||||||
import Version
|
import Version
|
||||||
|
import Path
|
||||||
|
|
||||||
|
/// A version of Xcode that's already installed
|
||||||
public struct InstalledXcode: Equatable {
|
public struct InstalledXcode: Equatable {
|
||||||
public let path: Path
|
public let path: Path
|
||||||
/// Composed of the bundle short version from Info.plist and the product build version from version.plist
|
/// Composed of the bundle short version from Info.plist and the product build version from version.plist
|
||||||
|
|
@ -39,34 +40,6 @@ public struct InstalledXcode: Equatable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct Xcode: Codable {
|
|
||||||
public let version: Version
|
|
||||||
public let url: URL
|
|
||||||
public let filename: String
|
|
||||||
public let releaseDate: Date?
|
|
||||||
|
|
||||||
public init(version: Version, url: URL, filename: String, releaseDate: Date?) {
|
|
||||||
self.version = version
|
|
||||||
self.url = url
|
|
||||||
self.filename = filename
|
|
||||||
self.releaseDate = releaseDate
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Downloads: Codable {
|
|
||||||
let downloads: [Download]
|
|
||||||
}
|
|
||||||
|
|
||||||
public struct Download: Codable {
|
|
||||||
public let name: String
|
|
||||||
public let files: [File]
|
|
||||||
public let dateModified: Date
|
|
||||||
|
|
||||||
public struct File: Codable {
|
|
||||||
public let remotePath: String
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public struct InfoPlist: Decodable {
|
public struct InfoPlist: Decodable {
|
||||||
public let bundleID: String?
|
public let bundleID: String?
|
||||||
public let bundleShortVersion: String?
|
public let bundleShortVersion: String?
|
||||||
|
|
@ -86,4 +59,3 @@ public struct VersionPlist: Decodable {
|
||||||
case productBuildVersion = "ProductBuildVersion"
|
case productBuildVersion = "ProductBuildVersion"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Loading…
Reference in a new issue