1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 03:50:08 +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] = [:]
/** 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.

View File

@ -9,8 +9,19 @@
import Foundation
class BrewExtensionsObservable: ObservableObject {
@Published var phpVersion: String {
didSet {
self.loadExtensionData(for: phpVersion)
}
}
@Published var extensions: [BrewPhpExtension] = []
init(phpVersion: String) {
self.phpVersion = phpVersion
self.loadExtensionData(for: phpVersion)
}
public func loadExtensionData(for version: String) {
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
} catch let error {
let error = error as! BrewCommandError

View File

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