diff --git a/admin/osx/mac-crafter/Sources/Utils/Packaging.swift b/admin/osx/mac-crafter/Sources/Utils/Packaging.swift index e22a341402..1147f74237 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Packaging.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Packaging.swift @@ -19,6 +19,8 @@ enum PackagingError: Error { case packageBuildError(String) case packageSigningError(String) case packageNotarisationError(String) + case packageSparkleBuildError(String) + case packageSparkleSignError(String) } func buildPackage(buildWorkPath: String, productPath: String) throws -> String { @@ -57,3 +59,17 @@ func notarisePackage( } } +func buildSparklePackage(packagePath: String, buildPath: String) throws -> String { + let sparkleTbzPath = "\(packagePath).tbz" + guard shell("tar cf \(sparkleTbzPath) \(packagePath)") == 0 else { + throw PackagingError.packageSparkleBuildError("Could not create Sparkle package tbz!") + } + return sparkleTbzPath +} + +func signSparklePackage(sparkleTbzPath: String, buildPath: String, signKey: String) throws +{ + guard shell("\(buildPath)/bin/sign_update -s \(signKey) \(sparkleTbzPath)") == 0 else { + throw PackagingError.packageSparkleSignError("Could not sign Sparkle package tbz!") + } +} diff --git a/admin/osx/mac-crafter/Sources/main.swift b/admin/osx/mac-crafter/Sources/main.swift index c5cae7b302..0c9e1ca270 100644 --- a/admin/osx/mac-crafter/Sources/main.swift +++ b/admin/osx/mac-crafter/Sources/main.swift @@ -77,6 +77,9 @@ struct Build: ParsableCommand { @Option(name: [.long], help: "Apple package signing ID.") var packageSigningId: String? + @Option(name: [.long], help: "Sparkle package signing key.") + var sparklePackageSignKey: String? + @Flag(help: "Reconfigure KDE Craft.") var reconfigureCraft = false @@ -241,6 +244,17 @@ struct Build: ParsableCommand { ) } } + + let sparklePackagePath = + try buildSparklePackage(packagePath: packagePath, buildPath: buildPath) + + if let sparklePackageSignKey { + try signSparklePackage( + sparkleTbzPath: sparklePackagePath, + buildPath: buildPath, + signKey: sparklePackageSignKey + ) + } } print("Done!")