mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
55 lines
1.5 KiB
Swift
55 lines
1.5 KiB
Swift
//
|
|
// ProcessInfo+Device.swift
|
|
// AltServer
|
|
//
|
|
// Created by Riley Testut on 9/13/23.
|
|
// Copyright © 2023 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import RegexBuilder
|
|
|
|
extension ProcessInfo
|
|
{
|
|
var deviceModel: String? {
|
|
let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"))
|
|
defer {
|
|
IOObjectRelease(service)
|
|
}
|
|
|
|
guard
|
|
let modelData = IORegistryEntryCreateCFProperty(service, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data,
|
|
let cDeviceModel = String(data: modelData, encoding: .utf8)?.cString(using: .utf8) // Remove trailing NULL character
|
|
else { return nil }
|
|
|
|
let deviceModel = String(cString: cDeviceModel)
|
|
return deviceModel
|
|
}
|
|
|
|
var operatingSystemBuildVersion: String? {
|
|
let osVersionString = ProcessInfo.processInfo.operatingSystemVersionString
|
|
let buildVersion: String?
|
|
|
|
if #available(macOS 13, *), let match = osVersionString.firstMatch(of: Regex {
|
|
"(Build "
|
|
Capture {
|
|
OneOrMore(.anyNonNewline)
|
|
}
|
|
")"
|
|
})
|
|
{
|
|
buildVersion = String(match.1)
|
|
}
|
|
else if let build = osVersionString.split(separator: " ").last?.dropLast()
|
|
{
|
|
buildVersion = String(build)
|
|
}
|
|
else
|
|
{
|
|
buildVersion = nil
|
|
}
|
|
|
|
return buildVersion
|
|
}
|
|
}
|