From: Claudio Cambra Date: Fri, 21 Jun 2024 12:16:37 +0000 (+0800) Subject: Add support for fetching and including Sparkle in mac crafter X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~6^2~135 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3ff8f83148633d8843f9d72170687e9f0cf361ea;p=nextcloud-desktop.git Add support for fetching and including Sparkle in mac crafter Signed-off-by: Claudio Cambra --- diff --git a/admin/osx/mac-crafter/Sources/main.swift b/admin/osx/mac-crafter/Sources/main.swift index ea4e63ac9..37333c8fb 100644 --- a/admin/osx/mac-crafter/Sources/main.swift +++ b/admin/osx/mac-crafter/Sources/main.swift @@ -52,6 +52,13 @@ struct MacCrafter: ParsableCommand { @Option(name: [.long], help: "The application's branded name.") var appName = "Nextcloud" + @Option(name: [.long], help: "Build with Sparkle auto-updater.") + var buildAutoUpdater = true + + @Option(name: [.long], help: "Sparkle download URL.") + var sparkleDownloadUrl = + "https://github.com/sparkle-project/Sparkle/releases/download/1.27.3/Sparkle-1.27.3.tar.xz" + mutating func run() throws { print("Configuring build tooling.") @@ -100,8 +107,39 @@ struct MacCrafter: ParsableCommand { shell("\(craftCommand) --install-deps nextcloud-client") } + var craftOptions: [String] = [] + + if buildAutoUpdater { + print("Configuring Sparkle auto-updater.") + + let fm = FileManager.default + guard fm.fileExists(atPath: "\(buildPath)/Sparkle.tar.xz") || + shell("wget \(sparkleDownloadUrl) -O \(buildPath)/Sparkle.tar.xz") == 0 + else { + throw MacCrafterError.environmentError("Error downloading sparkle.") + } + + guard fm.fileExists(atPath: "\(buildPath)/Sparkle.framework") || + shell("tar -xvf \(buildPath)/Sparkle.tar.xz -C \(buildPath)") == 0 + else { + throw MacCrafterError.environmentError("Error unpacking sparkle.") + } + + craftOptions.append("sparkleLibPath=\(buildPath)/Sparkle.framework") + } + print("Crafting Nextcloud Desktop Client...") - shell("\(craftCommand) --src-dir \(repoRootDir) -i --buildtype \(buildType) nextcloud-client") + + if !craftOptions.isEmpty { + let craftOptionsArg = craftOptions.map { "--set \"\($0)\"" } + for option in craftOptions { + shell("\(craftCommand) \(option) nextcloud-client") + } + } + + shell( + "\(craftCommand) --src-dir \(repoRootDir) --buildtype \(buildType) -i nextcloud-client" + ) guard let codeSignIdentity else { print("Crafted Nextcloud Desktop Client. Not codesigned.")