diff --git a/Xcodes/Backend/AppState.swift b/Xcodes/Backend/AppState.swift index 8f38ca7..89a43ac 100644 --- a/Xcodes/Backend/AppState.swift +++ b/Xcodes/Backend/AppState.swift @@ -68,7 +68,13 @@ class AppState: ObservableObject { Current.defaults.set(unxipExperiment, forKey: "unxipExperiment") } } - + + @Published var createSymLinkOnSelect = false { + didSet { + Current.defaults.set(createSymLinkOnSelect, forKey: "createSymLinkOnSelect") + } + } + // MARK: - Publisher Cancellables var cancellables = Set() @@ -489,6 +495,10 @@ class AppState: ObservableObject { if case let .failure(error) = completion { self.error = error self.presentedAlert = .generic(title: "Unable to select Xcode", message: error.legibleLocalizedDescription) + } else { + if self.createSymLinkOnSelect { + createSymbolicLink(xcode: xcode) + } } self.selectPublisher = nil }, diff --git a/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift b/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift index 9868e6f..7005d61 100644 --- a/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift +++ b/Xcodes/Frontend/Preferences/AdvancedPreferencePane.swift @@ -43,7 +43,20 @@ struct AdvancedPreferencePane: View { .font(.footnote) .fixedSize(horizontal: false, vertical: true) } - + } + .groupBoxStyle(PreferencesGroupBoxStyle()) + + GroupBox(label: Text("Active/Select")) { + VStack(alignment: .leading) { + Toggle( + "Automatically create symbolic link to Xcodes.app", + isOn: $appState.createSymLinkOnSelect + ) + Text("When making an Xcode version Active/Selected, try and create a symbolic link named Xcode.app in the installation directory") + .font(.footnote) + .fixedSize(horizontal: false, vertical: true) + } + .fixedSize(horizontal: false, vertical: true) } .groupBoxStyle(PreferencesGroupBoxStyle())