Skip to content

Commit ad98a59

Browse files
committed
automatically extracts minimum OS version from app bundle
1 parent ce61e27 commit ad98a59

4 files changed

Lines changed: 19 additions & 1 deletion

File tree

Sources/quickpkg/AppMetadata.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,18 @@ extension Bundle {
2121
}
2222
return nil
2323
}
24+
25+
/// Returns LSMinimumSystemVersion if present
26+
var minimumSystemVersion: String? {
27+
object(forInfoDictionaryKey: "LSMinimumSystemVersion") as? String
28+
}
2429
}
2530

2631
struct AppMetadata {
2732
let name: String
2833
let identifier: String
2934
let version: String
35+
let minimumSystemVersion: String?
3036

3137
init(from appURL: URL) throws {
3238
guard let bundle = Bundle(url: appURL) else {
@@ -47,5 +53,7 @@ struct AppMetadata {
4753
throw QuickPkgError.infoPlistParsingFailed("Missing version information")
4854
}
4955
self.version = version
56+
57+
self.minimumSystemVersion = bundle.minimumSystemVersion
5058
}
5159
}

Sources/quickpkg/PackageBuilder.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ struct PackageBuilder: Sendable {
3636
scripts: URL?,
3737
ownership: Ownership?,
3838
relocatable: Bool,
39+
minOSVersion: String?,
3940
sign: String?,
4041
keychain: String?,
4142
cert: String?,
@@ -74,7 +75,12 @@ struct PackageBuilder: Sendable {
7475
if let ownership = ownership {
7576
arguments += ["--ownership", ownership.rawValue]
7677
}
77-
78+
79+
if let minOSVersion = minOSVersion {
80+
arguments += ["--min-os-version", minOSVersion]
81+
logger.log("Minimum OS version: \(minOSVersion)", level: 1)
82+
}
83+
7884
if let sign = sign {
7985
arguments += ["--sign", sign]
8086
}

Sources/quickpkg/QuickPkg.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ struct QuickPkg: AsyncParsableCommand {
185185
// Extract metadata from app
186186
let metadata = try AppMetadata(from: payloadAppURL)
187187
logger.log("Name: \(metadata.name), ID: \(metadata.identifier), Version: \(metadata.version)", level: 1)
188+
if let minOS = metadata.minimumSystemVersion {
189+
logger.log("Minimum macOS: \(minOS)", level: 1)
190+
}
188191

189192
// Prepare scripts if needed
190193
var scriptsDir: URL?
@@ -260,6 +263,7 @@ struct QuickPkg: AsyncParsableCommand {
260263
scripts: scriptsDir,
261264
ownership: ownership,
262265
relocatable: relocatable,
266+
minOSVersion: metadata.minimumSystemVersion,
263267
sign: sign,
264268
keychain: keychain,
265269
cert: cert,

0 commit comments

Comments
 (0)