1
0
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:
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 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] {

View File

@@ -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

View File

@@ -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")
} }
} }