From dada7f271680034b0866ad3d280749cfd9ea52c9 Mon Sep 17 00:00:00 2001 From: Matt Kiazyk Date: Fri, 19 Jan 2024 11:18:45 -0600 Subject: [PATCH] 2.0.0 beta --- Xcodes.xcodeproj/project.pbxproj | 12 +- Xcodes/Backend/AppState+Runtimes.swift | 58 ------ Xcodes/Resources/Info.plist | 6 +- Xcodes/Resources/Licenses.rtf | 170 ++++++++++++++++++ .../Info.plist | 2 +- 5 files changed, 180 insertions(+), 68 deletions(-) diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index 8e5cd8c..4d34652 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -1073,7 +1073,7 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\""; DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = NO; @@ -1084,7 +1084,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.10.0; + MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.xcodesorg.xcodesapp; PRODUCT_NAME = Xcodes; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1318,7 +1318,7 @@ CODE_SIGN_ENTITLEMENTS = Xcodes/Resources/Xcodes.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\""; DEVELOPMENT_TEAM = ZU6GR6B2FY; ENABLE_HARDENED_RUNTIME = YES; @@ -1329,7 +1329,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.10.0; + MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.xcodesorg.xcodesapp; PRODUCT_NAME = Xcodes; SWIFT_VERSION = 5.0; @@ -1343,7 +1343,7 @@ CODE_SIGN_ENTITLEMENTS = Xcodes/Resources/Xcodes.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 19; DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\""; DEVELOPMENT_TEAM = ZU6GR6B2FY; ENABLE_HARDENED_RUNTIME = YES; @@ -1354,7 +1354,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.10.0; + MARKETING_VERSION = 2.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.xcodesorg.xcodesapp; PRODUCT_NAME = Xcodes; SWIFT_VERSION = 5.0; diff --git a/Xcodes/Backend/AppState+Runtimes.swift b/Xcodes/Backend/AppState+Runtimes.swift index 63a00f1..81abc5b 100644 --- a/Xcodes/Backend/AppState+Runtimes.swift +++ b/Xcodes/Backend/AppState+Runtimes.swift @@ -122,64 +122,6 @@ extension AppState { return expectedRuntimePath.url } - - func downloadRuntime(for runtime: DownloadableRuntime, downloader: Downloader, progressChanged: @escaping (Progress) -> Void) -> AnyPublisher { - // Check to see if the dmg is in the expected path in case it was downloaded but failed to install - - // call https://developerservices2.apple.com/services/download?path=/Developer_Tools/watchOS_10_beta/watchOS_10_beta_Simulator_Runtime.dmg 1st to get cookie - // use runtime.url for final with cookies - - // Check to see if the archive is in the expected path in case it was downloaded but failed to install - let url = URL(string: runtime.source)! - let expectedRuntimePath = Path.xcodesApplicationSupport/"\(url.lastPathComponent)" - // aria2 downloads directly to the destination (instead of into /tmp first) so we need to make sure that the download isn't incomplete - let aria2DownloadMetadataPath = expectedRuntimePath.parent/(expectedRuntimePath.basename() + ".aria2") - var aria2DownloadIsIncomplete = false - if case .aria2 = downloader, aria2DownloadMetadataPath.exists { - aria2DownloadIsIncomplete = true - } - if Current.files.fileExistsAtPath(expectedRuntimePath.string), aria2DownloadIsIncomplete == false { - Logger.appState.info("Found existing runtime that will be used for installation at \(expectedRuntimePath).") - return Just(expectedRuntimePath.url) - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - } - else { - - Logger.appState.info("Downloading runtime: \(url.lastPathComponent)") - switch downloader { - case .aria2: - let aria2Path = Path(url: Bundle.main.url(forAuxiliaryExecutable: "aria2c")!)! - return downloadRuntimeWithAria2( - runtime, - to: expectedRuntimePath, - aria2Path: aria2Path, - progressChanged: progressChanged) - - case .urlSession: - // TODO: Support runtime download via URL Session - return Just(runtime.url) - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - } - } - } - - public func downloadRuntimeWithAria2(_ runtime: DownloadableRuntime, to destination: Path, aria2Path: Path, progressChanged: @escaping (Progress) -> Void) -> AnyPublisher { - let cookies = AppleAPI.Current.network.session.configuration.httpCookieStorage?.cookies(for: runtime.url) ?? [] - - let (progress, publisher) = Current.shell.downloadWithAria2( - aria2Path, - runtime.url, - destination, - cookies - ) - progressChanged(progress) - return publisher - .map { _ in destination.url } - .eraseToAnyPublisher() - } - public func downloadRuntimeWithAria2(_ runtime: DownloadableRuntime, to destination: Path, aria2Path: Path) -> AsyncThrowingStream { let cookies = AppleAPI.Current.network.session.configuration.httpCookieStorage?.cookies(for: runtime.url) ?? [] diff --git a/Xcodes/Resources/Info.plist b/Xcodes/Resources/Info.plist index 49fe676..733c89a 100644 --- a/Xcodes/Resources/Info.plist +++ b/Xcodes/Resources/Info.plist @@ -25,7 +25,7 @@ LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright - Copyright © 2023 Robots and Pencils. + Copyright © 2024 XcodesOrg NSPrincipalClass NSApplication NSSupportsAutomaticTermination @@ -35,11 +35,11 @@ SMPrivilegedExecutables com.robotsandpencils.XcodesApp.Helper - identifier "com.robotsandpencils.XcodesApp.Helper" and info [CFBundleShortVersionString] >= "1.0.0" and anchor apple generic and certificate leaf[subject.OU] = "$(CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT)" + identifier "com.robotsandpencils.XcodesApp.Helper" and info [CFBundleShortVersionString] >= "1.0.0" and anchor apple generic and certificate leaf[subject.OU] = "$(CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT)" SUFeedURL https://www.xcodes.app/appcast.xml SUPublicEDKey - SEcz0vgUSeBTOoAXYe+64zea95G6lIf5NgzFs3InYJQ= + GrqOrFQHxfqoLFCAGc9luvsAWQifHtG9gQ3NVJ583tE= diff --git a/Xcodes/Resources/Licenses.rtf b/Xcodes/Resources/Licenses.rtf index 266ceda..c0fb5ad 100644 --- a/Xcodes/Resources/Licenses.rtf +++ b/Xcodes/Resources/Licenses.rtf @@ -595,6 +595,176 @@ SOFTWARE.\ \ \ +\fs34 unxip\ +\ + +\fs26 GNU LESSER GENERAL PUBLIC LICENSE\ + Version 3, 29 June 2007\ +\ + Copyright (C) 2007 Free Software Foundation, Inc. \ + Everyone is permitted to copy and distribute verbatim copies\ + of this license document, but changing it is not allowed.\ +\ +\ + This version of the GNU Lesser General Public License incorporates\ +the terms and conditions of version 3 of the GNU General Public\ +License, supplemented by the additional permissions listed below.\ +\ + 0. Additional Definitions.\ +\ + As used herein, "this License" refers to version 3 of the GNU Lesser\ +General Public License, and the "GNU GPL" refers to version 3 of the GNU\ +General Public License.\ +\ + "The Library" refers to a covered work governed by this License,\ +other than an Application or a Combined Work as defined below.\ +\ + An "Application" is any work that makes use of an interface provided\ +by the Library, but which is not otherwise based on the Library.\ +Defining a subclass of a class defined by the Library is deemed a mode\ +of using an interface provided by the Library.\ +\ + A "Combined Work" is a work produced by combining or linking an\ +Application with the Library. The particular version of the Library\ +with which the Combined Work was made is also called the "Linked\ +Version".\ +\ + The "Minimal Corresponding Source" for a Combined Work means the\ +Corresponding Source for the Combined Work, excluding any source code\ +for portions of the Combined Work that, considered in isolation, are\ +based on the Application, and not on the Linked Version.\ +\ + The "Corresponding Application Code" for a Combined Work means the\ +object code and/or source code for the Application, including any data\ +and utility programs needed for reproducing the Combined Work from the\ +Application, but excluding the System Libraries of the Combined Work.\ +\ + 1. Exception to Section 3 of the GNU GPL.\ +\ + You may convey a covered work under sections 3 and 4 of this License\ +without being bound by section 3 of the GNU GPL.\ +\ + 2. Conveying Modified Versions.\ +\ + If you modify a copy of the Library, and, in your modifications, a\ +facility refers to a function or data to be supplied by an Application\ +that uses the facility (other than as an argument passed when the\ +facility is invoked), then you may convey a copy of the modified\ +version:\ +\ + a) under this License, provided that you make a good faith effort to\ + ensure that, in the event an Application does not supply the\ + function or data, the facility still operates, and performs\ + whatever part of its purpose remains meaningful, or\ +\ + b) under the GNU GPL, with none of the additional permissions of\ + this License applicable to that copy.\ +\ + 3. Object Code Incorporating Material from Library Header Files.\ +\ + The object code form of an Application may incorporate material from\ +a header file that is part of the Library. You may convey such object\ +code under terms of your choice, provided that, if the incorporated\ +material is not limited to numerical parameters, data structure\ +layouts and accessors, or small macros, inline functions and templates\ +(ten or fewer lines in length), you do both of the following:\ +\ + a) Give prominent notice with each copy of the object code that the\ + Library is used in it and that the Library and its use are\ + covered by this License.\ +\ + b) Accompany the object code with a copy of the GNU GPL and this license\ + document.\ +\ + 4. Combined Works.\ +\ + You may convey a Combined Work under terms of your choice that,\ +taken together, effectively do not restrict modification of the\ +portions of the Library contained in the Combined Work and reverse\ +engineering for debugging such modifications, if you also do each of\ +the following:\ +\ + a) Give prominent notice with each copy of the Combined Work that\ + the Library is used in it and that the Library and its use are\ + covered by this License.\ +\ + b) Accompany the Combined Work with a copy of the GNU GPL and this license\ + document.\ +\ + c) For a Combined Work that displays copyright notices during\ + execution, include the copyright notice for the Library among\ + these notices, as well as a reference directing the user to the\ + copies of the GNU GPL and this license document.\ +\ + d) Do one of the following:\ +\ + 0) Convey the Minimal Corresponding Source under the terms of this\ + License, and the Corresponding Application Code in a form\ + suitable for, and under terms that permit, the user to\ + recombine or relink the Application with a modified version of\ + the Linked Version to produce a modified Combined Work, in the\ + manner specified by section 6 of the GNU GPL for conveying\ + Corresponding Source.\ +\ + 1) Use a suitable shared library mechanism for linking with the\ + Library. A suitable mechanism is one that (a) uses at run time\ + a copy of the Library already present on the user's computer\ + system, and (b) will operate properly with a modified version\ + of the Library that is interface-compatible with the Linked\ + Version.\ +\ + e) Provide Installation Information, but only if you would otherwise\ + be required to provide such information under section 6 of the\ + GNU GPL, and only to the extent that such information is\ + necessary to install and execute a modified version of the\ + Combined Work produced by recombining or relinking the\ + Application with a modified version of the Linked Version. (If\ + you use option 4d0, the Installation Information must accompany\ + the Minimal Corresponding Source and Corresponding Application\ + Code. If you use option 4d1, you must provide the Installation\ + Information in the manner specified by section 6 of the GNU GPL\ + for conveying Corresponding Source.)\ +\ + 5. Combined Libraries.\ +\ + You may place library facilities that are a work based on the\ +Library side by side in a single library together with other library\ +facilities that are not Applications and are not covered by this\ +License, and convey such a combined library under terms of your\ +choice, if you do both of the following:\ +\ + a) Accompany the combined library with a copy of the same work based\ + on the Library, uncombined with any other library facilities,\ + conveyed under the terms of this License.\ +\ + b) Give prominent notice with the combined library that part of it\ + is a work based on the Library, and explaining where to find the\ + accompanying uncombined form of the same work.\ +\ + 6. Revised Versions of the GNU Lesser General Public License.\ +\ + The Free Software Foundation may publish revised and/or new versions\ +of the GNU Lesser General Public License from time to time. Such new\ +versions will be similar in spirit to the present version, but may\ +differ in detail to address new problems or concerns.\ +\ + Each version is given a distinguishing version number. If the\ +Library as you received it specifies that a certain numbered version\ +of the GNU Lesser General Public License "or any later version"\ +applies to it, you have the option of following the terms and\ +conditions either of that published version or of any later version\ +published by the Free Software Foundation. If the Library as you\ +received it does not specify a version number of the GNU Lesser\ +General Public License, you may choose any version of the GNU Lesser\ +General Public License ever published by the Free Software Foundation.\ +\ + If the Library as you received it specifies that a proxy can decide\ +whether future versions of the GNU Lesser General Public License shall\ +apply, that proxy's public statement of acceptance of any version is\ +permanent authorization for you to choose that version for the\ +Library.\ +\ + \fs34 data\ \ diff --git a/com.robotsandpencils.XcodesApp.Helper/Info.plist b/com.robotsandpencils.XcodesApp.Helper/Info.plist index 54d2d99..2c54701 100644 --- a/com.robotsandpencils.XcodesApp.Helper/Info.plist +++ b/com.robotsandpencils.XcodesApp.Helper/Info.plist @@ -3,7 +3,7 @@ CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleShortVersionString