From 7aaf0563e672318783f698fdd93422349fbb17ae Mon Sep 17 00:00:00 2001 From: Matt Kiazyk Date: Tue, 2 Jan 2024 22:19:31 -0600 Subject: [PATCH] update Sparkle to 2.5.2 --- Xcodes.xcodeproj/project.pbxproj | 30 +++---- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../Preferences/UpdatesPreferencePane.swift | 36 ++++++--- Xcodes/Resources/Licenses.rtf | 79 ++++++++++++++++++- 4 files changed, 118 insertions(+), 31 deletions(-) diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index cc71e827..8e5cd8ce 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -121,6 +121,7 @@ E86671272B309D2F0048559A /* PlatformsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86671262B309D2F0048559A /* PlatformsView.swift */; }; E87AB3C52939B65E00D72F43 /* Hardware.swift in Sources */ = {isa = PBXBuildFile; fileRef = E87AB3C42939B65E00D72F43 /* Hardware.swift */; }; E87DD6EB25D053FA00D86808 /* Progress+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E87DD6EA25D053FA00D86808 /* Progress+.swift */; }; + E891A1C42B43ACF900A1B9D1 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E891A1C32B43ACF900A1B9D1 /* Sparkle */; }; E89342FA25EDCC17007CF557 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E89342F925EDCC17007CF557 /* NotificationManager.swift */; }; E8977EA325C11E1500835F80 /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8977EA225C11E1500835F80 /* PreferencesView.swift */; }; E8B20CBF2A2EDEC20057D816 /* SDKs+Xcode.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8B20CBE2A2EDEC20057D816 /* SDKs+Xcode.swift */; }; @@ -134,7 +135,6 @@ E8E98A9025D8631800EC89A0 /* InstallationStepRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAFBC3FF259AC17F00E2A3D8 /* InstallationStepRowView.swift */; }; E8E98A9625D863D700EC89A0 /* InstallationStepDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E98A9525D863D700EC89A0 /* InstallationStepDetailView.swift */; }; E8F44A1E296B4CD7002D6592 /* Path in Frameworks */ = {isa = PBXBuildFile; productRef = E8F44A1D296B4CD7002D6592 /* Path */; }; - E8F81FC4282D8A17006CBD0F /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E8F81FC3282D8A17006CBD0F /* Sparkle */; }; E8FD5727291EE4AC001E004C /* AsyncNetworkService in Frameworks */ = {isa = PBXBuildFile; productRef = E8FD5726291EE4AC001E004C /* AsyncNetworkService */; }; /* End PBXBuildFile section */ @@ -344,12 +344,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E8F81FC4282D8A17006CBD0F /* Sparkle in Frameworks */, CABFA9E42592F08E00380FEE /* Version in Frameworks */, CABFA9FD2592F13300380FEE /* LegibleError in Frameworks */, E689540325BE8C64000EBCEA /* DockProgress in Frameworks */, CA9FF86D25951C6E00E47BAF /* XCModel in Frameworks */, CABFA9F82592F0F900380FEE /* KeychainAccess in Frameworks */, + E891A1C42B43ACF900A1B9D1 /* Sparkle in Frameworks */, CAA858CD25A3D8BC00ACF8C0 /* ErrorHandling in Frameworks */, E8C0EB1A291EF43E0081528A /* XcodesKit in Frameworks */, E8FD5727291EE4AC001E004C /* AsyncNetworkService in Frameworks */, @@ -705,12 +705,12 @@ CABFA9FC2592F13300380FEE /* LegibleError */, CA9FF86C25951C6E00E47BAF /* XCModel */, CAA858CC25A3D8BC00ACF8C0 /* ErrorHandling */, - E8F81FC3282D8A17006CBD0F /* Sparkle */, E689540225BE8C64000EBCEA /* DockProgress */, E8FD5726291EE4AC001E004C /* AsyncNetworkService */, E8C0EB19291EF43E0081528A /* XcodesKit */, E8F44A1D296B4CD7002D6592 /* Path */, E84E4F562B335094003F3959 /* OrderedCollections */, + E891A1C32B43ACF900A1B9D1 /* Sparkle */, ); productName = XcodesMac; productReference = CAD2E79E2449574E00113D76 /* Xcodes.app */; @@ -793,11 +793,11 @@ CA9FF86B25951C6E00E47BAF /* XCRemoteSwiftPackageReference "data" */, CAA858CB25A3D8BC00ACF8C0 /* XCRemoteSwiftPackageReference "ErrorHandling" */, CAC28186259EE27200B8AB0B /* XCRemoteSwiftPackageReference "CombineExpectations" */, - E8F81FC2282D8A17006CBD0F /* XCRemoteSwiftPackageReference "Sparkle" */, E689540125BE8C64000EBCEA /* XCRemoteSwiftPackageReference "DockProgress" */, E8FD5725291EE4AC001E004C /* XCRemoteSwiftPackageReference "AsyncHTTPNetworkService" */, E8F44A1C296B4CD7002D6592 /* XCRemoteSwiftPackageReference "Path" */, E84E4F552B335094003F3959 /* XCRemoteSwiftPackageReference "swift-collections" */, + E891A1C22B43ACA400A1B9D1 /* XCRemoteSwiftPackageReference "Sparkle" */, ); productRefGroup = CAD2E79F2449574E00113D76 /* Products */; projectDirPath = ""; @@ -1523,20 +1523,20 @@ minimumVersion = 1.0.5; }; }; - E8F44A1C296B4CD7002D6592 /* XCRemoteSwiftPackageReference "Path" */ = { + E891A1C22B43ACA400A1B9D1 /* XCRemoteSwiftPackageReference "Sparkle" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/mxcl/Path.swift"; + repositoryURL = "https://github.com/sparkle-project/Sparkle"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.0.0; + minimumVersion = 2.5.2; }; }; - E8F81FC2282D8A17006CBD0F /* XCRemoteSwiftPackageReference "Sparkle" */ = { + E8F44A1C296B4CD7002D6592 /* XCRemoteSwiftPackageReference "Path" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/sparkle-project/Sparkle"; + repositoryURL = "https://github.com/mxcl/Path.swift"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 2.0.0; + minimumVersion = 1.0.0; }; }; E8FD5725291EE4AC001E004C /* XCRemoteSwiftPackageReference "AsyncHTTPNetworkService" */ = { @@ -1599,6 +1599,11 @@ package = E84E4F552B335094003F3959 /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; + E891A1C32B43ACF900A1B9D1 /* Sparkle */ = { + isa = XCSwiftPackageProductDependency; + package = E891A1C22B43ACA400A1B9D1 /* XCRemoteSwiftPackageReference "Sparkle" */; + productName = Sparkle; + }; E8C0EB19291EF43E0081528A /* XcodesKit */ = { isa = XCSwiftPackageProductDependency; productName = XcodesKit; @@ -1608,11 +1613,6 @@ package = E8F44A1C296B4CD7002D6592 /* XCRemoteSwiftPackageReference "Path" */; productName = Path; }; - E8F81FC3282D8A17006CBD0F /* Sparkle */ = { - isa = XCSwiftPackageProductDependency; - package = E8F81FC2282D8A17006CBD0F /* XCRemoteSwiftPackageReference "Sparkle" */; - productName = Sparkle; - }; E8FD5726291EE4AC001E004C /* AsyncNetworkService */ = { isa = XCSwiftPackageProductDependency; package = E8FD5725291EE4AC001E004C /* XCRemoteSwiftPackageReference "AsyncHTTPNetworkService" */; diff --git a/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 743059b0..220940ed 100644 --- a/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Xcodes.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -78,8 +78,8 @@ "repositoryURL": "https://github.com/sparkle-project/Sparkle/", "state": { "branch": null, - "revision": "286edd1fa22505a9e54d170e9fd07d775ea233f2", - "version": "2.1.0" + "revision": "47d3d90aee3c52b6f61d04ceae426e607df62347", + "version": "2.5.2" } }, { diff --git a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift index 349d9bec..624a3066 100644 --- a/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/UpdatesPreferencePane.swift @@ -69,7 +69,8 @@ struct UpdatesPreferencePane: View { class ObservableUpdater: ObservableObject { private let updater: SPUUpdater - + private let updaterDelegate = UpdaterDelegate() + @Published var automaticallyChecksForUpdates = false { didSet { updater.automaticallyChecksForUpdates = automaticallyChecksForUpdates @@ -81,17 +82,17 @@ class ObservableUpdater: ObservableObject { @Published var includePrereleaseVersions = false { didSet { UserDefaults.standard.setValue(includePrereleaseVersions, forKey: "includePrereleaseVersions") - - if includePrereleaseVersions { - updater.setFeedURL(.prereleaseAppcast) - } else { - updater.setFeedURL(.appcast) - } + + updaterDelegate.includePrereleaseVersions = includePrereleaseVersions } } init() { - updater = SPUStandardUpdaterController(startingUpdater: true, updaterDelegate: nil, userDriverDelegate: nil).updater + updater = SPUStandardUpdaterController(startingUpdater: true, updaterDelegate: updaterDelegate, userDriverDelegate: nil).updater + + // upgrade from an old sparkle version which set feeds via the updater + // now it uses the `updaterDelegate` + updater.clearFeedURLFromUserDefaults() automaticallyChecksForUpdatesObservation = updater.observe( \.automaticallyChecksForUpdates, @@ -116,9 +117,22 @@ class ObservableUpdater: ObservableObject { } } -extension URL { - static let appcast = URL(string: "https://www.xcodes.app/appcast.xml")! - static let prereleaseAppcast = URL(string: "https://www.xcodes.app/appcast_pre.xml")! +class UpdaterDelegate: NSObject, SPUUpdaterDelegate { + var includePrereleaseVersions: Bool = false + + func feedURLString(for updater: SPUUpdater) -> String? { + if includePrereleaseVersions { + return .prereleaseAppcast + } else { + return .appcast + } + } +} + + +extension String { + static let appcast = "https://www.xcodes.app/appcast.xml" + static let prereleaseAppcast = "https://www.xcodes.app/appcast_pre.xml" } struct UpdatesPreferencePane_Previews: PreviewProvider { diff --git a/Xcodes/Resources/Licenses.rtf b/Xcodes/Resources/Licenses.rtf index aa97f20f..266cedac 100644 --- a/Xcodes/Resources/Licenses.rtf +++ b/Xcodes/Resources/Licenses.rtf @@ -656,13 +656,86 @@ EXTERNAL LICENSES\ =================\ \ bspatch.c and bsdiff.c, from bsdiff 4.3 :\ - Copyright (c) 2003-2005 Colin Percival.\ +\ +Copyright 2003-2005 Colin Percival\ +All rights reserved\ +\ +Redistribution and use in source and binary forms, with or without\ +modification, are permitted providing that the following conditions \ +are met:\ +1. Redistributions of source code must retain the above copyright\ + notice, this list of conditions and the following disclaimer.\ +2. Redistributions in binary form must reproduce the above copyright\ + notice, this list of conditions and the following disclaimer in the\ + documentation and/or other materials provided with the distribution.\ +\ +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\ +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\ +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\ +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\ +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\ +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\ +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\ +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\ +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING\ +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\ +POSSIBILITY OF SUCH DAMAGE.\ +\ +--\ \ sais.c and sais.c, from sais-lite (2010/08/07) :\ - Copyright (c) 2008-2010 Yuta Mori.\ +\ +The sais-lite copyright is as follows:\ +\ +Copyright (c) 2008-2010 Yuta Mori All Rights Reserved.\ +\ +Permission is hereby granted, free of charge, to any person\ +obtaining a copy of this software and associated documentation\ +files (the "Software"), to deal in the Software without\ +restriction, including without limitation the rights to use,\ +copy, modify, merge, publish, distribute, sublicense, and/or sell\ +copies of the Software, and to permit persons to whom the\ +Software is furnished to do so, subject to the following\ +conditions:\ +\ +The above copyright notice and this permission notice shall be\ +included in all copies or substantial portions of the Software.\ +\ +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\ +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\ +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\ +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\ +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\ +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\ +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\ +OTHER DEALINGS IN THE SOFTWARE.\ +\ +--\ +\ +Portable C implementation of Ed25519, from https://github.com/orlp/ed25519\ +\ +Copyright (c) 2015 Orson Peters \ +\ +This software is provided 'as-is', without any express or implied warranty. In no event will the\ +authors be held liable for any damages arising from the use of this software.\ +\ +Permission is granted to anyone to use this software for any purpose, including commercial\ +applications, and to alter it and redistribute it freely, subject to the following restrictions:\ +\ +1. The origin of this software must not be misrepresented; you must not claim that you wrote the\ + original software. If you use this software in a product, an acknowledgment in the product\ + documentation would be appreciated but is not required.\ +\ +2. Altered source versions must be plainly marked as such, and must not be misrepresented as\ + being the original software.\ +\ +3. This notice may not be removed or altered from any source distribution.\ +\ +--\ \ SUSignatureVerifier.m:\ - Copyright (c) 2011 Mark Hamlin.\ +\ +Copyright (c) 2011 Mark Hamlin.\ \ All rights reserved.\ \