1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 03:50:08 +02:00

🏗 WIP: Fake services manager

This commit is contained in:
2022-12-24 15:17:47 +01:00
parent 59f60b5013
commit 296bc486c4
3 changed files with 25 additions and 4 deletions

View File

@ -12,15 +12,25 @@ class FakeServicesManager: ServicesManager {
var fixedFormulae: [String] = []
var fixedStatus: ServiceStatus = .loading
override init() {}
init(
formulae: [String] = ["php", "nginx", "dnsmasq"],
status: ServiceStatus = .loading
) {
super.init()
Log.warn("A fake services manager is being used, so Homebrew formula resolver is set to act in fake mode.")
Log.warn("If you do not want this behaviour, never instantiate FakeServicesManager!")
self.fixedFormulae = formulae
self.fixedStatus = status
self.services = self.formulae.map {
let wrapper = ServiceWrapper(formula: $0)
wrapper.service = HomebrewService.dummy(named: $0.name, enabled: true)
return wrapper
}
}
override var formulae: [HomebrewFormula] {

View File

@ -13,7 +13,7 @@ class ServicesManager: ObservableObject {
@ObservedObject static var shared: ServicesManager = ValetServicesManager()
@Published private(set) var services = [ServiceWrapper]()
@Published var services = [ServiceWrapper]()
subscript(name: String) -> ServiceWrapper? {
return self.services.first { wrapper in
@ -22,6 +22,10 @@ class ServicesManager: ObservableObject {
}
public var statusMessage: String {
if self.services.isEmpty {
return "Loading..."
}
let statuses = self.services[0...2].map { $0.status }
if statuses.contains(.loading) {
return "Determining Valet status..."
@ -37,6 +41,10 @@ class ServicesManager: ObservableObject {
}
public var statusColor: Color {
if self.services.isEmpty {
return .yellow
}
let statuses = self.services[0...2].map { $0.status }
if statuses.contains(.loading) {
return .orange

View File

@ -148,8 +148,11 @@ public struct BlueButton: ButtonStyle {
struct ServicesView_Previews: PreviewProvider {
static var previews: some View {
ServicesView(manager: FakeServicesManager(), perRow: 4)
.frame(width: 330.0)
.previewDisplayName("Loading")
ServicesView(manager: FakeServicesManager(
formulae: ["php", "nginx", "dnsmasq"],
status: .active
), perRow: 4)
.frame(width: 330.0)
.previewDisplayName("Loading")
}
}