mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-11 05:20:07 +02:00
🏗 WIP: Fake services manager
This commit is contained in:
@@ -12,15 +12,25 @@ class FakeServicesManager: ServicesManager {
|
|||||||
var fixedFormulae: [String] = []
|
var fixedFormulae: [String] = []
|
||||||
var fixedStatus: ServiceStatus = .loading
|
var fixedStatus: ServiceStatus = .loading
|
||||||
|
|
||||||
|
override init() {}
|
||||||
|
|
||||||
init(
|
init(
|
||||||
formulae: [String] = ["php", "nginx", "dnsmasq"],
|
formulae: [String] = ["php", "nginx", "dnsmasq"],
|
||||||
status: ServiceStatus = .loading
|
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("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!")
|
Log.warn("If you do not want this behaviour, never instantiate FakeServicesManager!")
|
||||||
|
|
||||||
self.fixedFormulae = formulae
|
self.fixedFormulae = formulae
|
||||||
self.fixedStatus = status
|
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] {
|
override var formulae: [HomebrewFormula] {
|
||||||
|
@@ -13,7 +13,7 @@ class ServicesManager: ObservableObject {
|
|||||||
|
|
||||||
@ObservedObject static var shared: ServicesManager = ValetServicesManager()
|
@ObservedObject static var shared: ServicesManager = ValetServicesManager()
|
||||||
|
|
||||||
@Published private(set) var services = [ServiceWrapper]()
|
@Published var services = [ServiceWrapper]()
|
||||||
|
|
||||||
subscript(name: String) -> ServiceWrapper? {
|
subscript(name: String) -> ServiceWrapper? {
|
||||||
return self.services.first { wrapper in
|
return self.services.first { wrapper in
|
||||||
@@ -22,6 +22,10 @@ class ServicesManager: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var statusMessage: String {
|
public var statusMessage: String {
|
||||||
|
if self.services.isEmpty {
|
||||||
|
return "Loading..."
|
||||||
|
}
|
||||||
|
|
||||||
let statuses = self.services[0...2].map { $0.status }
|
let statuses = self.services[0...2].map { $0.status }
|
||||||
if statuses.contains(.loading) {
|
if statuses.contains(.loading) {
|
||||||
return "Determining Valet status..."
|
return "Determining Valet status..."
|
||||||
@@ -37,6 +41,10 @@ class ServicesManager: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public var statusColor: Color {
|
public var statusColor: Color {
|
||||||
|
if self.services.isEmpty {
|
||||||
|
return .yellow
|
||||||
|
}
|
||||||
|
|
||||||
let statuses = self.services[0...2].map { $0.status }
|
let statuses = self.services[0...2].map { $0.status }
|
||||||
if statuses.contains(.loading) {
|
if statuses.contains(.loading) {
|
||||||
return .orange
|
return .orange
|
||||||
|
@@ -148,8 +148,11 @@ public struct BlueButton: ButtonStyle {
|
|||||||
|
|
||||||
struct ServicesView_Previews: PreviewProvider {
|
struct ServicesView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
ServicesView(manager: FakeServicesManager(), perRow: 4)
|
ServicesView(manager: FakeServicesManager(
|
||||||
.frame(width: 330.0)
|
formulae: ["php", "nginx", "dnsmasq"],
|
||||||
.previewDisplayName("Loading")
|
status: .active
|
||||||
|
), perRow: 4)
|
||||||
|
.frame(width: 330.0)
|
||||||
|
.previewDisplayName("Loading")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user