mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-03-25 08:55:46 +00:00
2.0.0 beta
This commit is contained in:
parent
2184c872d3
commit
dada7f2716
5 changed files with 180 additions and 68 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -122,64 +122,6 @@ extension AppState {
|
|||
return expectedRuntimePath.url
|
||||
}
|
||||
|
||||
|
||||
func downloadRuntime(for runtime: DownloadableRuntime, downloader: Downloader, progressChanged: @escaping (Progress) -> Void) -> AnyPublisher<URL, Error> {
|
||||
// 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<URL, Error> {
|
||||
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<Progress, Error> {
|
||||
let cookies = AppleAPI.Current.network.session.configuration.httpCookieStorage?.cookies(for: runtime.url) ?? []
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2023 Robots and Pencils.</string>
|
||||
<string>Copyright © 2024 XcodesOrg</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSSupportsAutomaticTermination</key>
|
||||
|
|
@ -35,11 +35,11 @@
|
|||
<key>SMPrivilegedExecutables</key>
|
||||
<dict>
|
||||
<key>com.robotsandpencils.XcodesApp.Helper</key>
|
||||
<string>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)"</string>
|
||||
<string>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)"</string>
|
||||
</dict>
|
||||
<key>SUFeedURL</key>
|
||||
<string>https://www.xcodes.app/appcast.xml</string>
|
||||
<key>SUPublicEDKey</key>
|
||||
<string>SEcz0vgUSeBTOoAXYe+64zea95G6lIf5NgzFs3InYJQ=</string>
|
||||
<string>GrqOrFQHxfqoLFCAGc9luvsAWQifHtG9gQ3NVJ583tE=</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -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. <https://fsf.org/>\
|
||||
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\
|
||||
\
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
|
|
|||
Loading…
Reference in a new issue