Make Symbolic Link on Xcode Select

This commit is contained in:
Matt Kiazyk 2022-04-13 21:34:03 -05:00
parent b36ef479a7
commit f7b4c5e2bb
No known key found for this signature in database
GPG key ID: 850581D2373E4A99
2 changed files with 25 additions and 2 deletions

View file

@ -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<AnyCancellable>()
@ -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
},

View file

@ -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())