1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-09 12:43:01 +02:00

Extension manager responds to PHP change

This commit is contained in:
2023-11-27 00:07:47 +01:00
parent 904d05bdce
commit 94714c3e7a
4 changed files with 23 additions and 11 deletions

View File

@@ -86,7 +86,14 @@ class PhpEnvironments {
var cachedPhpInstallations: [String: PhpInstallation] = [:] var cachedPhpInstallations: [String: PhpInstallation] = [:]
/** Information about the currently linked PHP installation. */ /** Information about the currently linked PHP installation. */
var currentInstall: ActivePhpInstallation? var currentInstall: ActivePhpInstallation? {
didSet {
// Let the PHP extension manager, if it exists, know the version changed
if let version = currentInstall?.version.short {
App.shared.phpExtensionManagerWindowController?.view?.manager.phpVersion = version
}
}
}
/** /**
The version that the `php` formula via Brew is aliased to on the current system. The version that the `php` formula via Brew is aliased to on the current system.

View File

@@ -9,8 +9,19 @@
import Foundation import Foundation
class BrewExtensionsObservable: ObservableObject { class BrewExtensionsObservable: ObservableObject {
@Published var phpVersion: String {
didSet {
self.loadExtensionData(for: phpVersion)
}
}
@Published var extensions: [BrewPhpExtension] = [] @Published var extensions: [BrewPhpExtension] = []
init(phpVersion: String) {
self.phpVersion = phpVersion
self.loadExtensionData(for: phpVersion)
}
public func loadExtensionData(for version: String) { public func loadExtensionData(for version: String) {
let tapFormulae = BrewTapFormulae.from(tap: "shivammathur/homebrew-extensions") let tapFormulae = BrewTapFormulae.from(tap: "shivammathur/homebrew-extensions")

View File

@@ -70,7 +70,7 @@ extension PhpExtensionManagerView {
} }
} }
self.manager.loadExtensionData(for: self.phpVersion) self.manager.loadExtensionData(for: self.manager.phpVersion)
self.status.busy = false self.status.busy = false
} catch let error { } catch let error {
let error = error as! BrewCommandError let error = error as! BrewCommandError

View File

@@ -10,22 +10,16 @@ import Foundation
import SwiftUI import SwiftUI
struct PhpExtensionManagerView: View { struct PhpExtensionManagerView: View {
@ObservedObject var manager = BrewExtensionsObservable() @ObservedObject var manager: BrewExtensionsObservable
@ObservedObject var status: BusyStatus @ObservedObject var status: BusyStatus
@State var searchText: String @State var searchText: String
@State var phpVersion: String {
didSet {
self.manager.loadExtensionData(for: self.phpVersion)
}
}
init() { init() {
self.searchText = "" self.searchText = ""
self.status = BusyStatus.busy() self.status = BusyStatus.busy()
self.phpVersion = PhpEnvironments.shared.currentInstall!.version.short let version = PhpEnvironments.shared.currentInstall!.version.short
self.manager.loadExtensionData(for: self.phpVersion) self.manager = BrewExtensionsObservable(phpVersion: version)
self.status.busy = false self.status.busy = false
#warning("PHP extension manager does not react to PHP version changes!")
} }
var filteredExtensions: [BrewPhpExtension] { var filteredExtensions: [BrewPhpExtension] {