Files
xtool-mirror/Sources/Supersign/DeveloperServices/DeveloperServicesProvisioningOperation.swift
2024-12-01 22:38:51 -05:00

58 lines
1.7 KiB
Swift

//
// DeveloperServicesProvisioningOperation.swift
// Supersign
//
// Created by Kabir Oberai on 12/10/19.
// Copyright © 2019 Kabir Oberai. All rights reserved.
//
import Foundation
public struct ProvisioningInfo: Sendable {
public let newBundleID: String
public let entitlements: Entitlements
public let mobileprovision: Mobileprovision
}
public struct DeveloperServicesProvisioningOperation: DeveloperServicesOperation {
public struct Response {
public let signingInfo: SigningInfo
public let provisioningDict: [URL: ProvisioningInfo]
}
public let context: SigningContext
public let app: URL
public let confirmRevocation: @Sendable ([DeveloperServicesCertificate]) async -> Bool
public let progress: @Sendable (Double) -> Void
public init(
context: SigningContext,
app: URL,
confirmRevocation: @escaping @Sendable ([DeveloperServicesCertificate]) async -> Bool,
progress: @escaping @Sendable (Double) -> Void
) {
self.context = context
self.app = app
self.confirmRevocation = confirmRevocation
self.progress = progress
}
public func perform() async throws -> Response {
progress(0/3)
_ = try await DeveloperServicesFetchDeviceOperation(context: context).perform()
progress(1/3)
let signingInfo = try await DeveloperServicesFetchCertificateOperation(
context: self.context,
confirmRevocation: confirmRevocation
).perform()
progress(2/3)
let provisioningDict = try await DeveloperServicesAddAppOperation(context: context, root: app).perform()
progress(3/3)
return .init(signingInfo: signingInfo, provisioningDict: provisioningDict)
}
}