mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-11-07 05:10:06 +01:00
👌 Unify scanners
This commit is contained in:
@@ -25,7 +25,7 @@ public struct TestableConfiguration: Codable {
|
||||
Log.info("Applying fake commands...")
|
||||
ActiveCommand.useTestable(commandOutput)
|
||||
Log.info("Applying fake scanner...")
|
||||
ValetScanners.useFake()
|
||||
ValetScanner.useFake()
|
||||
Log.info("Applying fake Valet domain interactor...")
|
||||
ValetInteractor.useFake()
|
||||
}
|
||||
|
||||
@@ -23,8 +23,9 @@ class FakeValetInteractor: ValetInteractor {
|
||||
|
||||
override func unlink(site: ValetSite) async throws {
|
||||
await delay(seconds: delayTime)
|
||||
if let scanner = ValetScanners.siteScanner as? FakeSiteScanner {
|
||||
scanner.fakes.removeAll { $0 === site }
|
||||
|
||||
if let scanner = ValetScanner.active as? FakeDomainScanner {
|
||||
scanner.sites.removeAll { $0 === site }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +45,9 @@ class FakeValetInteractor: ValetInteractor {
|
||||
|
||||
override func remove(proxy: ValetProxy) async throws {
|
||||
await delay(seconds: delayTime)
|
||||
#warning("A fake proxy scanner needs to be added")
|
||||
|
||||
if let scanner = ValetScanner.active as? FakeDomainScanner {
|
||||
scanner.proxies.removeAll { $0 === proxy }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
//
|
||||
// EmptyProxyScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 01/11/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class EmptyProxyScanner: ProxyScanner {
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy] {
|
||||
return []
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
//
|
||||
// ProxyScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 02/04/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol ProxyScanner {
|
||||
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy]
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// ValetProxyScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 11/04/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class ValetProxyScanner: ProxyScanner {
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy] {
|
||||
return try! FileManager
|
||||
.default
|
||||
.contentsOfDirectory(atPath: directoryPath)
|
||||
.filter {
|
||||
return !$0.starts(with: ".")
|
||||
}
|
||||
.compactMap {
|
||||
return NginxConfigurationFile.from(filePath: "\(directoryPath)/\($0)")
|
||||
}
|
||||
.filter {
|
||||
return $0.proxy != nil
|
||||
}
|
||||
.map {
|
||||
return ValetProxy($0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,25 @@
|
||||
//
|
||||
// ValetSiteScanner.swift
|
||||
// DomainScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 19/03/2022.
|
||||
// Created by Nico Verbruggen on 02/04/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol SiteScanner {
|
||||
protocol DomainScanner {
|
||||
|
||||
// MARK: - Sites
|
||||
|
||||
func resolveSiteCount(paths: [String]) -> Int
|
||||
|
||||
func resolveSitesFrom(paths: [String]) -> [ValetSite]
|
||||
|
||||
func resolveSite(path: String) -> ValetSite?
|
||||
|
||||
// MARK: - Proxies
|
||||
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy]
|
||||
|
||||
}
|
||||
@@ -1,13 +1,14 @@
|
||||
//
|
||||
// FakeSiteScanner.swift
|
||||
// FakeDomainScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 02/04/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
class FakeSiteScanner: SiteScanner {
|
||||
var fakes = [
|
||||
class FakeDomainScanner: DomainScanner {
|
||||
|
||||
var sites: [ValetSite] = [
|
||||
FakeValetSite(fakeWithName: "laravel", tld: "test", secure: true,
|
||||
path: "~/Code/laravel/framework", linked: true),
|
||||
|
||||
@@ -27,15 +28,27 @@ class FakeSiteScanner: SiteScanner {
|
||||
path: "~/Sites/wordpress", linked: false, driver: "WordPress", constraint: "^7.4", isolated: "7.4")
|
||||
]
|
||||
|
||||
var proxies: [ValetProxy] = [
|
||||
// TODO: Add new proxy here
|
||||
]
|
||||
|
||||
// MARK: - Sites
|
||||
|
||||
func resolveSiteCount(paths: [String]) -> Int {
|
||||
return fakes.count
|
||||
return sites.count
|
||||
}
|
||||
|
||||
func resolveSitesFrom(paths: [String]) -> [ValetSite] {
|
||||
return fakes
|
||||
return sites
|
||||
}
|
||||
|
||||
func resolveSite(path: String) -> ValetSite? {
|
||||
return nil
|
||||
}
|
||||
|
||||
// MARK: - Proxies
|
||||
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy] {
|
||||
return proxies
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// ValetSiteScanner.swift
|
||||
// ValetDomainScanner.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 02/04/2022.
|
||||
@@ -8,7 +8,10 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
class ValetSiteScanner: SiteScanner {
|
||||
class ValetDomainScanner: DomainScanner {
|
||||
|
||||
// MARK: - Sites
|
||||
|
||||
func resolveSiteCount(paths: [String]) -> Int {
|
||||
return paths.map { path in
|
||||
|
||||
@@ -76,4 +79,24 @@ class ValetSiteScanner: SiteScanner {
|
||||
|
||||
return (FileSystem.isDirectory(siteDir) || FileSystem.isSymlink(siteDir))
|
||||
}
|
||||
|
||||
// MARK: - Proxies
|
||||
|
||||
func resolveProxies(directoryPath: String) -> [ValetProxy] {
|
||||
return try! FileManager
|
||||
.default
|
||||
.contentsOfDirectory(atPath: directoryPath)
|
||||
.filter {
|
||||
return !$0.starts(with: ".")
|
||||
}
|
||||
.compactMap {
|
||||
return NginxConfigurationFile.from(filePath: "\(directoryPath)/\($0)")
|
||||
}
|
||||
.filter {
|
||||
return $0.proxy != nil
|
||||
}
|
||||
.map {
|
||||
return ValetProxy($0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// Valet+Scanners.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 01/11/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class ValetScanner {
|
||||
|
||||
static var active: DomainScanner = ValetDomainScanner()
|
||||
|
||||
public static func useFake() {
|
||||
ValetScanner.active = FakeDomainScanner()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -49,7 +49,7 @@ class Valet {
|
||||
public func checkForMarketingMode() {
|
||||
if ProcessInfo.processInfo.environment["PHPMON_MARKETING_MODE"] != nil {
|
||||
Log.info("Using a fake list of sites for Marketing Mode!")
|
||||
ValetScanners.useFake()
|
||||
ValetScanner.useFake()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,8 +188,7 @@ class Valet {
|
||||
Returns a count of how many sites are linked and parked.
|
||||
*/
|
||||
private func countPaths() -> Int {
|
||||
return ValetScanners.siteScanner
|
||||
.resolveSiteCount(paths: config.paths)
|
||||
return ValetScanner.active.resolveSiteCount(paths: config.paths)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,19 +197,19 @@ class Valet {
|
||||
private func resolvePaths() {
|
||||
isBusy = true
|
||||
|
||||
sites = ValetScanners.siteScanner
|
||||
sites = ValetScanner.active
|
||||
.resolveSitesFrom(paths: config.paths)
|
||||
.sorted {
|
||||
$0.absolutePath < $1.absolutePath
|
||||
}
|
||||
|
||||
proxies = ValetScanners.proxyScanner
|
||||
proxies = ValetScanner.active
|
||||
.resolveProxies(
|
||||
directoryPath: "~/.config/valet/Nginx".replacingTildeWithHomeDirectory
|
||||
)
|
||||
|
||||
if let defaultPath = Valet.shared.config.defaultSite,
|
||||
let site = ValetSiteScanner().resolveSite(path: defaultPath) {
|
||||
let site = ValetScanner.active.resolveSite(path: defaultPath) {
|
||||
sites.insert(site, at: 0)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
//
|
||||
// Valet+Scanners.swift
|
||||
// PHP Monitor
|
||||
//
|
||||
// Created by Nico Verbruggen on 01/11/2022.
|
||||
// Copyright © 2022 Nico Verbruggen. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
class ValetScanners {
|
||||
|
||||
static var siteScanner: SiteScanner = ValetSiteScanner()
|
||||
static var proxyScanner: ProxyScanner = ValetProxyScanner()
|
||||
|
||||
public static func useFake() {
|
||||
ValetScanners.siteScanner = FakeSiteScanner()
|
||||
ValetScanners.proxyScanner = EmptyProxyScanner()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user