mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-22 20:35:48 +03:00
Extract app bundle codesigning procedure to separate file in mac crafter
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
parent
a4fbf97f36
commit
922748755f
2 changed files with 34 additions and 21 deletions
|
@ -18,6 +18,10 @@ enum CodeSigningError: Error {
|
|||
case failedToCodeSign(String)
|
||||
}
|
||||
|
||||
enum AppBundleSigningError: Error {
|
||||
case couldNotEnumeratePlugins(String)
|
||||
}
|
||||
|
||||
func codesign(
|
||||
identity: String,
|
||||
path: String,
|
||||
|
@ -29,3 +33,32 @@ func codesign(
|
|||
throw CodeSigningError.failedToCodeSign("Failed to code-sign \(path).")
|
||||
}
|
||||
}
|
||||
|
||||
func codesignClientAppBundle(
|
||||
at clientAppDir: String, withCodeSignIdentity codeSignIdentity: String
|
||||
) throws {
|
||||
print("Code-signing Nextcloud Desktop Client libraries and frameworks...")
|
||||
|
||||
let clientFrameworksDir = "\(clientAppDir)/Contents/Frameworks"
|
||||
let fm = FileManager.default
|
||||
let clientLibs = try fm.contentsOfDirectory(atPath: clientFrameworksDir)
|
||||
for lib in clientLibs {
|
||||
guard isLibrary(lib) else { continue }
|
||||
try codesign(identity: codeSignIdentity, path: "\(clientFrameworksDir)/\(lib)")
|
||||
}
|
||||
|
||||
let clientPluginsDir = "\(clientAppDir)/Contents/PlugIns"
|
||||
guard let clientPluginsEnumerator = fm.enumerator(atPath: clientPluginsDir) else {
|
||||
throw AppBundleSigningError.couldNotEnumeratePlugins(
|
||||
"Failed to list craft plugins directory at \(clientPluginsDir)."
|
||||
)
|
||||
}
|
||||
|
||||
for case let plugin as String in clientPluginsEnumerator {
|
||||
guard isLibrary(plugin) else { continue }
|
||||
try codesign(identity: codeSignIdentity, path: "\(clientPluginsDir)/\(plugin)")
|
||||
}
|
||||
|
||||
print("Code-signing Nextcloud Desktop Client app bundle...")
|
||||
try codesign(identity: codeSignIdentity, path: clientAppDir)
|
||||
}
|
||||
|
|
|
@ -113,27 +113,7 @@ struct MacCrafter: ParsableCommand {
|
|||
let craftBuildDir = "\(buildPath)/\(craftTarget)/build"
|
||||
let clientAppDir =
|
||||
"\(craftBuildDir)/nextcloud-client/image-\(buildType)-master/\(appName).app"
|
||||
let clientFrameworksDir = "\(clientAppDir)/Contents/Frameworks"
|
||||
let clientLibs = try fm.contentsOfDirectory(atPath: clientFrameworksDir)
|
||||
for lib in clientLibs {
|
||||
guard isLibrary(lib) else { continue }
|
||||
try codesign(identity: codeSignIdentity, path: "\(clientFrameworksDir)/\(lib)")
|
||||
}
|
||||
|
||||
let clientPluginsDir = "\(clientAppDir)/Contents/PlugIns"
|
||||
guard let clientPluginsEnumerator = fm.enumerator(atPath: clientPluginsDir) else {
|
||||
throw MacCrafterError.failedEnumeration(
|
||||
"Failed to list craft plugins directory at \(clientPluginsDir)."
|
||||
)
|
||||
}
|
||||
|
||||
for case let plugin as String in clientPluginsEnumerator {
|
||||
guard isLibrary(plugin) else { continue }
|
||||
try codesign(identity: codeSignIdentity, path: "\(clientPluginsDir)/\(plugin)")
|
||||
}
|
||||
|
||||
print("Code-signing Nextcloud Desktop Client app bundle...")
|
||||
try codesign(identity: codeSignIdentity, path: clientAppDir)
|
||||
try codesignClientAppBundle(at: clientAppDir, withCodeSignIdentity: codeSignIdentity)
|
||||
|
||||
print("Done!")
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue