mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
[AltServer] Caches iOS and tvOS DeveloperDiskImages to separate locations
Previously, DeveloperDiskImages were only differentied by OS version, which meant (for example) iOS 15.0 and tvOS 15.0 disk images were cached to the same location. Now iOS and tvOS disk images are stored separately, so AltServer will no longer try to use a cached disk image for the wrong OS.
This commit is contained in:
@@ -85,18 +85,27 @@ class DeveloperDiskManager
|
|||||||
func downloadDeveloperDisk(for device: ALTDevice, completionHandler: @escaping (Result<(URL, URL), Error>) -> Void)
|
func downloadDeveloperDisk(for device: ALTDevice, completionHandler: @escaping (Result<(URL, URL), Error>) -> Void)
|
||||||
{
|
{
|
||||||
let osVersion = "\(device.osVersion.majorVersion).\(device.osVersion.minorVersion)"
|
let osVersion = "\(device.osVersion.majorVersion).\(device.osVersion.minorVersion)"
|
||||||
|
|
||||||
|
let osName: String
|
||||||
let osKeyPath: KeyPath<FetchURLsResponse.Disks, [String: DeveloperDiskURL]?>
|
let osKeyPath: KeyPath<FetchURLsResponse.Disks, [String: DeveloperDiskURL]?>
|
||||||
|
|
||||||
switch device.type
|
switch device.type
|
||||||
{
|
{
|
||||||
case .iphone, .ipad: osKeyPath = \FetchURLsResponse.Disks.iOS
|
case .iphone, .ipad:
|
||||||
case .appletv: osKeyPath = \FetchURLsResponse.Disks.tvOS
|
osName = "iOS"
|
||||||
|
osKeyPath = \FetchURLsResponse.Disks.iOS
|
||||||
|
|
||||||
|
case .appletv:
|
||||||
|
osName = "tvOS"
|
||||||
|
osKeyPath = \FetchURLsResponse.Disks.tvOS
|
||||||
|
|
||||||
default: return completionHandler(.failure(DeveloperDiskError.unsupportedOperatingSystem))
|
default: return completionHandler(.failure(DeveloperDiskError.unsupportedOperatingSystem))
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
let developerDiskDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osVersion)
|
let osDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osName)
|
||||||
|
let developerDiskDirectoryURL = osDirectoryURL.appendingPathComponent(osVersion, isDirectory: true)
|
||||||
try FileManager.default.createDirectory(at: developerDiskDirectoryURL, withIntermediateDirectories: true, attributes: nil)
|
try FileManager.default.createDirectory(at: developerDiskDirectoryURL, withIntermediateDirectories: true, attributes: nil)
|
||||||
|
|
||||||
let developerDiskURL = developerDiskDirectoryURL.appendingPathComponent("DeveloperDiskImage.dmg")
|
let developerDiskURL = developerDiskDirectoryURL.appendingPathComponent("DeveloperDiskImage.dmg")
|
||||||
@@ -111,10 +120,6 @@ class DeveloperDiskManager
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
let (diskFileURL, signatureFileURL) = try result.get()
|
let (diskFileURL, signatureFileURL) = try result.get()
|
||||||
|
|
||||||
let developerDiskDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osVersion)
|
|
||||||
try FileManager.default.createDirectory(at: developerDiskDirectoryURL, withIntermediateDirectories: true, attributes: nil)
|
|
||||||
|
|
||||||
try FileManager.default.copyItem(at: diskFileURL, to: developerDiskURL)
|
try FileManager.default.copyItem(at: diskFileURL, to: developerDiskURL)
|
||||||
try FileManager.default.copyItem(at: signatureFileURL, to: developerDiskSignatureURL)
|
try FileManager.default.copyItem(at: signatureFileURL, to: developerDiskSignatureURL)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user