Add ability to sign pkg from mac-crafter

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-09-19 21:00:52 +08:00
Родитель 4438836ade
Коммит 1b747fa134
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: C839200C384636B0
2 изменённых файлов: 18 добавлений и 0 удалений

Просмотреть файл

@ -17,6 +17,7 @@ import Foundation
enum PackagingError: Error {
case projectNameSettingError(String)
case packageBuildError(String)
case packageSigningError(String)
}
func buildPackage(buildWorkPath: String, productPath: String) throws -> String {
@ -34,3 +35,13 @@ func buildPackage(buildWorkPath: String, productPath: String) throws -> String {
return "\(productPath)/\(packageFile)"
}
func signPackage(packagePath: String, packageSigningId: String) throws {
let packagePathNew = "\(packagePath).new"
guard shell("productsign --timestamp --sign '\(packageSigningId)' \(packagePath) \(packagePathNew)") == 0 else {
throw PackagingError.packageSigningError("Could not sign pkg file!")
}
let fm = FileManager.default
try fm.removeItem(atPath: packagePath)
try fm.moveItem(atPath: packagePathNew, toPath: packagePath)
}

Просмотреть файл

@ -65,6 +65,9 @@ struct Build: ParsableCommand {
@Option(name: [.long], help: "Git clone command; include options such as depth.")
var gitCloneCommand = "git clone --depth=1"
@Option(name: [.long], help: "Apple package signing ID.")
var packageSigningId: String?
@Flag(help: "Reconfigure KDE Craft.")
var reconfigureCraft = false
@ -216,6 +219,10 @@ struct Build: ParsableCommand {
if package {
let packagePath =
try buildPackage(buildWorkPath: buildWorkPath, productPath: productPath)
if let packageSigningId {
try signPackage(packagePath: packagePath, packageSigningId: packageSigningId)
}
}
print("Done!")