mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 14:53:25 +01:00
AltServer embeds the AltJIT CLI tool in its app bundle and runs it as an admin subprocess.
67 lines
2.4 KiB
Swift
67 lines
2.4 KiB
Swift
//
|
|
// JITError.swift
|
|
// AltJIT
|
|
//
|
|
// Created by Riley Testut on 9/3/23.
|
|
// Copyright © 2023 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension JITError
|
|
{
|
|
enum Code: Int, ALTErrorCode
|
|
{
|
|
typealias Error = JITError
|
|
|
|
case processNotRunning
|
|
case dependencyNotFound
|
|
}
|
|
|
|
static func processNotRunning(_ process: AppProcess, file: StaticString = #file, line: Int = #line) -> JITError {
|
|
JITError(code: .processNotRunning, process: process, sourceFile: file, sourceLine: UInt(line))
|
|
}
|
|
|
|
static func dependencyNotFound(_ dependency: String?, file: StaticString = #file, line: Int = #line) -> JITError {
|
|
let errorFailure = NSLocalizedString("AltServer requires additional dependencies to enable JIT on iOS 17.", comment: "")
|
|
return JITError(code: .dependencyNotFound, errorFailure: errorFailure, dependency: dependency, faq: "https://faq.altstore.io/how-to-use-altstore/altjit", sourceFile: file, sourceLine: UInt(line))
|
|
}
|
|
}
|
|
|
|
struct JITError: ALTLocalizedError
|
|
{
|
|
let code: Code
|
|
|
|
var errorTitle: String?
|
|
var errorFailure: String?
|
|
|
|
@UserInfoValue var process: AppProcess?
|
|
|
|
@UserInfoValue var dependency: String?
|
|
@UserInfoValue var faq: String? // Show user FAQ URL in AltStore error log.
|
|
|
|
var sourceFile: StaticString?
|
|
var sourceLine: UInt?
|
|
|
|
var errorFailureReason: String {
|
|
switch self.code
|
|
{
|
|
case .processNotRunning:
|
|
let targetName = self.process?.description ?? NSLocalizedString("The target app", comment: "")
|
|
return String(format: NSLocalizedString("%@ is not running.", comment: ""), targetName)
|
|
|
|
case .dependencyNotFound:
|
|
let dependencyName = self.dependency.map { "'\($0)'" } ?? NSLocalizedString("A required dependency", comment: "")
|
|
return String(format: NSLocalizedString("%@ is not installed.", comment: ""), dependencyName)
|
|
}
|
|
}
|
|
|
|
var recoverySuggestion: String? {
|
|
switch self.code
|
|
{
|
|
case .processNotRunning: return NSLocalizedString("Make sure the app is running in the foreground on your device then try again.", comment: "")
|
|
case .dependencyNotFound: return NSLocalizedString("Please follow the instructions on the AltStore FAQ to install all required dependencies, then try again.", comment: "")
|
|
}
|
|
}
|
|
}
|