Commit graph

207 commits

Author SHA1 Message Date
Matt Kiazyk
ecfb49a216
Merge branch 'main' into Notifications 2021-05-02 09:38:29 -05:00
Andrew Erickson
9395b1fda2 only present a single alert at time 2021-05-02 07:52:42 -06:00
Andrew Erickson
2289692422 show auth errors inline on sign in view 2021-05-01 09:12:53 -06:00
Andrew Erickson
357121bad5 fix branch conflicts 2021-04-30 20:15:54 -06:00
Andrew Erickson
cafa7baf1f present two factor sheet after 2fa data is set 2021-04-30 14:56:40 -06:00
Andrew Erickson
287b5500fe present sign in when credentials are required 2021-04-30 14:43:54 -06:00
Matt Kiazyk
094bb6f0cc
Adds MacOS notifications 2021-04-28 21:50:44 -05:00
Sam Lu
59971fbe1e Create universal aria2 binary
Fat binary generated via `lipo` that contains support for both x86_64 and arm64
2021-04-22 23:21:32 -06:00
Sam Lu
350e5708b7 Bundle M1-compatible version of aria2 2021-04-15 17:46:44 -06:00
Matt Kiazyk
0c94a76baa
Merge pull request #115 from RobotsAndPencils/EstimatedNewLine
Updates estimated time on info pane to 2 lines for better readability
2021-03-10 08:28:17 -06:00
Matt Kiazyk
da56b2ac6d
Updates estimated time on info pane to 2 lines for better readability 2021-03-07 14:33:32 -06:00
Matt Kiazyk
8011f4a288
Auto Install Xcode if wanted 2021-03-07 14:21:27 -06:00
Brandon Evans
2f04d23eac
Use Logger for Progress.updateFromAria2 2021-02-18 19:19:30 -07:00
Brandon Evans
899eec7dae
Don't attempt to parse days from aria2c ETA
I had initially suggested this but then went and checked in the source and the largest unit in the format is hours. 52da4e40ea/src/util.cc (L518-L534)
2021-02-18 19:16:08 -07:00
Brandon Evans
e301ad8818
Configure aria2c Progress better
Using .file kind and .downloading file operation kind will produce a more appropriate localizedAdditionalDescription.

The fileTotalCount and fileCompletedCount aren't appropriate for this case, because there's only one file being downloaded.
2021-02-18 19:14:44 -07:00
Matt Kiazyk
b06be4e3fa
Download stats for Aria2 2021-02-13 21:23:22 -06:00
Brandon Evans
9eda0984ac
Merge pull request #100 from RobotsAndPencils/identical-builds
Improve how identical builds are represented in the UI
2021-02-08 08:16:32 -07:00
Brandon Evans
b8bae4f32c
Don't consider versions without build identifiers for identical builds 2021-02-06 14:56:28 -07:00
Matt Kiazyk
1c6efbbbb1
default to aria2 2021-02-06 14:31:46 -06:00
Matt Kiazyk
c6e3382d94
When downloading, use the downloader from userdefaults 2021-02-05 08:32:23 -06:00
Brandon Evans
760c9f300e
Handle duplicate 3.2.3 release builds
:/
2021-02-04 21:25:01 -07:00
Brandon Evans
dcd4001548
Merge identical builds into the release version instead of filtering 2021-02-04 21:25:00 -07:00
Brandon Evans
bc45daeb74
Only adjust available versions for Apple data source 2021-02-04 21:25:00 -07:00
Brandon Evans
7ac4814420
Treat GM versions as release versions 2021-02-04 21:25:00 -07:00
Brandon Evans
57767f6920
Fix RC capitalization 2021-02-04 21:25:00 -07:00
Matt Kiazyk
75cbd9550b
Adjust ByteCountFormatter. PR Feedback 2021-02-03 21:55:47 -06:00
Matt Kiazyk
b53c480764
Adds a DownloadFileSize when using Apple Data Source 2021-02-01 21:18:49 -06:00
Brandon Evans
352816f64a
Merge pull request #87 from RobotsAndPencils/auth-pref-ui-change
Show stored username in General preference pane even when we don't have a valid session
2021-01-26 08:50:18 -07:00
Brandon Evans
75457dd9eb
Show stored username in General preference pane
This reverts the change from 90c067997b so that the username is shown in situations where we don't have a valid session but could almost certainly get one. Instead, to achieve what that commit was trying to do, we'll instead remove the username from UserDefaults if auth fails with an invalid username or password error. I think this will more closely match what users expect in this UI.

I've added a comment in the UI explaining why it is the way it is. It might also be worth considering renaming AuthenticationState or its cases to better reflect that it's probably more about the (short-lived) session state than whether the user has signed in before and has stored their credentials.
2021-01-25 19:56:28 -07:00
Brandon Evans
58cddb88f6
Try to improve auth error messages 2021-01-25 19:36:49 -07:00
Brandon Evans
cb507c3d02
Prepare user for helper installation before post-install steps 2021-01-23 20:25:28 -07:00
Brandon Evans
044f066422
Extract HelperInstallState to new file 2021-01-23 19:38:11 -07:00
Brandon Evans
d84173e29c
Prepare user for helper installation
Doesn't yet handle the post-install steps that need the helper.
2021-01-23 19:38:11 -07:00
Brandon Evans
408d05a4a7
Merge pull request #80 from RobotsAndPencils/handle-helper-install-errors
Handle helper installation errors
2021-01-23 15:00:57 -07:00
Brandon Evans
91293557ec
Catch and reword xip "not enough free space" error 2021-01-23 13:28:43 -07:00
Brandon Evans
6b5c288a40
Unwrap auth error messages to avoid "Optional(...)" 2021-01-22 22:19:31 -07:00
Brandon Evans
e21e4d9cdf
Handle helper installation errors 2021-01-22 22:18:59 -07:00
Matt Kiazyk
aa49f36b03
don't show brackets when buildMetadataIdentifiers is empty 2021-01-20 21:13:53 -06:00
Brandon Evans
e467f26adc
Add more logging to HelperClient 2021-01-17 12:37:40 -07:00
Brandon Evans
3d5edb3968
Replace NSError() with specific error 2021-01-17 12:29:28 -07:00
Brandon Evans
55e0447e54
Invalidate XPC connection after installing 2021-01-17 11:57:45 -07:00
Brandon Evans
a504504825
Always show build identifiers in list and info pane 2021-01-16 13:30:52 -07:00
Brandon Evans
4301667000
Replace print/dump/NSLog with os.log Logger 2021-01-16 13:14:27 -07:00
Brandon Evans
cd2bde2272
Move Xcode path into XcodeInstallState.installed case 2021-01-16 13:09:48 -07:00
Brandon Evans
bc27f1785b
Filter out prerelease versions that have the same build identifier as a release build 2021-01-16 11:40:27 -07:00
Brandon Evans
62237bf4a8
Fix a bug when an installed version was appended
We were appending a version without appending a corresponding AvailableXcode, and these two arrays were being zipped later so they wouldn't line up. This change simplifies this method a bit by working on only a single array, and then also moves that appending to the end after the array of Xcodes is created.
2021-01-16 11:40:04 -07:00
Brandon Evans
26da7969a1
Make sure install updates happen on main queue 2021-01-16 10:15:39 -07:00
Brandon Evans
ed023218b8
Simplify Version comparison 2021-01-16 10:15:39 -07:00
Brandon Evans
faad4c2ab7
Fix bug where adjusted versions weren't used to look up AvailableXcodes 2021-01-16 10:15:39 -07:00
Brandon Evans
baa8491786
If build metadata identifiers match, treat it as a match regardless of other version components 2021-01-16 10:15:39 -07:00
Brandon Evans
ad02e89449
Add failing test to cover removing an uninstalled version, fix it
https://github.com/RobotsAndPencils/XcodesApp/pull/44#issuecomment-756783640
2021-01-16 10:15:32 -07:00
Brandon Evans
0295bc8b1b
Stop aria2c if Xcodes stops
I removed this because I thought it wasn't necessary for some reason. We do send a SIGTERM if the user cancels the installation (via subscription cancellation), but if the whole app quits aria2c would keep running in the background.
2021-01-12 20:51:22 -07:00
Brandon Evans
93f819f2f3
Add downloaders to SettingsView 2021-01-08 17:22:38 -07:00
Brandon Evans
23cd43011b
Bundle aria2c 1.35.0 executable and source 2021-01-08 17:22:38 -07:00
Brandon Evans
fecb40893f
Don't replace existing install state when updating 2021-01-07 21:25:08 -07:00
Brandon Evans
4a33d010a8
Confirm before cancelling installation 2021-01-07 21:25:08 -07:00
Brandon Evans
1a830dc9dc
Add cancel install button to context menu and info pane 2021-01-07 21:25:08 -07:00
Brandon Evans
482b32e4e0
Add isTesting to make NSTestCase check more clear 2021-01-07 21:25:07 -07:00
Brandon Evans
89143b8751
Dispatch Process.run work manually instead of using subscribe(on:) and receive(on:)
The previous implementation was doing something weird when it was used during installation in:

verifySecurityAssessment(of: installedXcode)
    .combineLatest(self.verifySigningCertificate(of: installedXcode.path.url))

It looks like it would subscribe after the Process.run future had already sent a value, and so it would never finish. This seems weird, and I'm assuming that I'm misunderstanding something about this behaviour, but dispatching manually seems reasonable and works.
2021-01-07 21:25:07 -07:00
Brandon Evans
bfb3fd9ea5
Add install functionality
I'm omitting aria2 support for now.
2021-01-07 21:25:07 -07:00
Brandon Evans
a3e9101397
Replace .alert with .emittingError 2021-01-04 16:23:35 -07:00
Brandon Evans
813489b5fa
Add Environment+Mock 2021-01-03 10:18:48 -07:00
Brandon Evans
b1e6cffd09
Use helper from Current 2021-01-03 10:18:08 -07:00
Brandon Evans
f3680da2ae
Add InstallationStepView 2021-01-01 15:36:20 -07:00
Brandon Evans
ba1c4fec0f
Merge pull request #38 from RobotsAndPencils/remove-promisekit
Remove PromiseKit
2021-01-01 15:03:34 -07:00
Brandon Evans
245780023b
Convert Current.shell to Combine 2021-01-01 15:02:21 -07:00
Brandon Evans
f00ae396a6
Remove Current.shell sudo functionality
This'll be done in the helper
2021-01-01 15:02:20 -07:00
Brandon Evans
9971e0b45d
Remove Promise retry functions
We'll need to reimplement these later when implementing installation
2021-01-01 15:02:20 -07:00
Brandon Evans
fa277ccaae
Convert URLSession.downloadTask to Combine 2021-01-01 15:02:20 -07:00
Matt Kiazyk
7d1e22e668
Remove some unused code 2021-01-01 13:01:07 -06:00
Brandon Evans
95ca2bc1c3
Remove PromiseKit and PMKFoundation 2021-01-01 10:29:27 -07:00
Matt Kiazyk
72bdadb796
PR Cleanup 2020-12-31 16:06:03 -06:00
Matt Kiazyk
7bfb94d75a
Uninstall a xcode version 2020-12-31 12:36:31 -06:00
Brandon Evans
15132bdfaa
Psych, switch "default" to "active", add justification 2020-12-30 22:06:39 -07:00
Matt Kiazyk
1cd96cc9fc
Merge branch 'main' into enhancement/31-helpModifier 2020-12-30 15:07:08 -06:00
Matt Kiazyk
8df4bb59e0
Update some text to better suit HIG
Co-authored-by: Brandon Evans <brandon.evans@robotsandpencils.com>
2020-12-30 15:00:18 -06:00
Brandon Evans
b32687484d
Move Xcode selection state into window 2020-12-29 13:48:17 -07:00
Brandon Evans
047288384d
Reflect currently-selected Xcode in list 2020-12-28 19:58:36 -07:00
Matt Kiazyk
fdb74ee8d9
Adds the .help modifier to a variety of buttons 2020-12-28 16:27:35 -06:00
Brandon Evans
8084f057fd
Create MainWindow to split up XcodeListView 2020-12-28 12:42:28 -07:00
Brandon Evans
9dc3d21f2e
Rename launch to open
This is the preferred verb when it's user-facing, according to Apple's style guide.
2020-12-28 12:42:28 -07:00
Brandon Evans
ba0c429766
Add trailing inspector pane 2020-12-28 12:42:28 -07:00
Brandon Evans
44da1efca9
AcknowledgementsGenerator supports *.LICENSE files for code not from SPM 2020-12-28 10:38:59 -07:00
Brandon Evans
dbff012dc8
Use copyright value from Info.plist in about window 2020-12-28 10:38:29 -07:00
Brandon Evans
bc209f6112
Add privileged helper that runs xcode-select 2020-12-28 10:38:27 -07:00
Brandon Evans
1fef255c3d
Add app icon to installed rows 2020-12-28 07:55:12 -07:00
Brandon Evans
4d2600f821
Add Xcode command menu 2020-12-27 23:23:33 -07:00
Brandon Evans
912ac0a28e
Allow launching and copying the path of an installed Xcode 2020-12-27 23:22:57 -07:00
Brandon Evans
adad238b2a
Move uninstalled Xcode property into AppState 2020-12-27 23:22:57 -07:00
Brandon Evans
acd82fa07a
Extract AppState.XcodeVersion to Xcode 2020-12-27 23:22:57 -07:00
Brandon Evans
de54c3d784
Only sign in before refreshing when using Apple data source 2020-12-27 18:33:29 -07:00
Brandon Evans
33b5f96ed2
Merge XcodeList into AppState 2020-12-27 18:29:25 -07:00
Brandon Evans
f06d72f3eb
Split up Models.swift 2020-12-27 18:29:25 -07:00
Brandon Evans
293aef80e3
Add Xcode Releases data source 2020-12-27 18:29:25 -07:00
Brandon Evans
b342baff02
Update when the app launches or becomes active and it's been a day since last update 2020-12-27 18:29:25 -07:00
Brandon Evans
9b26688255
Add refresh menu item and progress view 2020-12-27 18:29:24 -07:00
Brandon Evans
4ef8428151
Convert XcodeList to Combine 2020-12-27 18:29:24 -07:00
Chad Sykes
ee10d2f92b Some variable renaming based on PR feedback 2020-12-27 16:14:10 -07:00
Chad Sykes
74cb2198f5 Add missing error alerts to the SignIn views (this does not fix the error formatting from AppState for fear of merge issues) 2020-12-27 13:36:28 -07:00
Chad Sykes
c9c31ff6f5 Fix warning about executing updating the UI from outside the main thread 2020-12-27 13:21:07 -07:00
Chad Sykes
4e03c59d0a Disable the action button when the AppState isProcessingRequest 2020-12-27 12:22:57 -07:00
Brandon Evans
cb42864d44
Add custom about window with dependency acknowledgments 2020-12-26 16:34:16 -07:00
Brandon Evans
bfb56660bf
Sign In instead of Login 2020-12-22 22:11:42 -07:00
Brandon Evans
5149e817da
Store credentials in the keychain
Like xcodes, storing the username in defaults so we know which item to look up in the keychain later. This also fixes the Xcode list update logic to not only validate the session but login with saved credentials if it fails.
2020-12-22 22:06:18 -07:00
Brandon Evans
867ad8ab4b
Add SettingsView 2020-12-22 21:26:25 -07:00
Brandon Evans
155c62de77
Fix bundle IDs 2020-12-22 21:26:05 -07:00
Brandon Evans
34adfb73a2
Reorganize files a bit 2020-12-22 21:01:33 -07:00