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:
@@ -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.
|
||||||
|
@@ -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")
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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] {
|
||||||
|
Reference in New Issue
Block a user