From 771f8dc75720ce7fb9dabb6b6276f1354a37bae9 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Fri, 21 Oct 2022 19:45:42 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=20WIP=20for=20fake=20site=20enhanc?= =?UTF-8?q?ements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 30 +++++++++++++- .../Valet/{ => Domains}/DomainListable.swift | 0 .../Valet/Domains/ValetInteractable.swift | 41 +++++++++++++++++++ .../Valet/Domains/ValetInteractor.swift | 29 +++++++++++++ .../Sites/SiteScanner/FakeSiteScanner.swift | 12 +++--- .../Valet/Sites/ValetSite+Fake.swift | 4 +- .../SwiftUI/Domains/VersionPopoverView.swift | 10 ++--- 7 files changed, 111 insertions(+), 15 deletions(-) rename phpmon/Domain/Integrations/Valet/{ => Domains}/DomainListable.swift (100%) create mode 100644 phpmon/Domain/Integrations/Valet/Domains/ValetInteractable.swift create mode 100644 phpmon/Domain/Integrations/Valet/Domains/ValetInteractor.swift diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index f6b744e..5593f96 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -35,6 +35,14 @@ 54FCFD2E276C8D67004CE748 /* HotkeyPreferenceView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 54FCFD2C276C8D67004CE748 /* HotkeyPreferenceView.xib */; }; 54FCFD30276C8DA4004CE748 /* HotkeyPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD2F276C8DA4004CE748 /* HotkeyPreferenceView.swift */; }; 54FCFD31276C8DA4004CE748 /* HotkeyPreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54FCFD2F276C8DA4004CE748 /* HotkeyPreferenceView.swift */; }; + C40175B229030F4600763A68 /* ValetInteractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B129030F4600763A68 /* ValetInteractable.swift */; }; + C40175B329030F4600763A68 /* ValetInteractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B129030F4600763A68 /* ValetInteractable.swift */; }; + C40175B429030F4600763A68 /* ValetInteractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B129030F4600763A68 /* ValetInteractable.swift */; }; + C40175B529030F4600763A68 /* ValetInteractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B129030F4600763A68 /* ValetInteractable.swift */; }; + C40175B82903108900763A68 /* ValetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B72903108900763A68 /* ValetInteractor.swift */; }; + C40175B92903108900763A68 /* ValetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B72903108900763A68 /* ValetInteractor.swift */; }; + C40175BA2903108900763A68 /* ValetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B72903108900763A68 /* ValetInteractor.swift */; }; + C40175BB2903108900763A68 /* ValetInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40175B72903108900763A68 /* ValetInteractor.swift */; }; C40508AF28ADA23D008FAC1F /* NoDomainResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508AE28ADA23D008FAC1F /* NoDomainResultsView.swift */; }; C40508B128ADAB44008FAC1F /* NSMenuItemExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40508B028ADAB44008FAC1F /* NSMenuItemExtension.swift */; }; C405A4D024B9B9140062FAFA /* InternetAccessPolicy.strings in Resources */ = {isa = PBXBuildFile; fileRef = C405A4CE24B9B9130062FAFA /* InternetAccessPolicy.strings */; }; @@ -690,6 +698,8 @@ 54FCFD29276C8AA4004CE748 /* CheckboxPreferenceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxPreferenceView.swift; sourceTree = ""; }; 54FCFD2C276C8D67004CE748 /* HotkeyPreferenceView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HotkeyPreferenceView.xib; sourceTree = ""; }; 54FCFD2F276C8DA4004CE748 /* HotkeyPreferenceView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HotkeyPreferenceView.swift; sourceTree = ""; }; + C40175B129030F4600763A68 /* ValetInteractable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ValetInteractable.swift; sourceTree = ""; }; + C40175B72903108900763A68 /* ValetInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ValetInteractor.swift; sourceTree = ""; }; C40508AE28ADA23D008FAC1F /* NoDomainResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoDomainResultsView.swift; sourceTree = ""; }; C40508B028ADAB44008FAC1F /* NSMenuItemExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSMenuItemExtension.swift; sourceTree = ""; }; C405A4CE24B9B9130062FAFA /* InternetAccessPolicy.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = InternetAccessPolicy.strings; sourceTree = ""; }; @@ -983,6 +993,16 @@ path = Views; sourceTree = ""; }; + C40175B629030F7A00763A68 /* Domains */ = { + isa = PBXGroup; + children = ( + C42F26722805B4B400938AC7 /* DomainListable.swift */, + C40175B129030F4600763A68 /* ValetInteractable.swift */, + C40175B72903108900763A68 /* ValetInteractor.swift */, + ); + path = Domains; + sourceTree = ""; + }; C405A4CD24B9B9070062FAFA /* IAP */ = { isa = PBXGroup; children = ( @@ -1343,7 +1363,7 @@ isa = PBXGroup; children = ( C4AF9F792754499000D44ED0 /* Valet.swift */, - C42F26722805B4B400938AC7 /* DomainListable.swift */, + C40175B629030F7A00763A68 /* Domains */, C4C0E8D927F887BD002D32A9 /* Proxies */, C4C0E8D827F887A5002D32A9 /* Sites */, ); @@ -1894,6 +1914,7 @@ C4C8900728F0E3EF00CE5E97 /* ActiveFileSystem.swift in Sources */, C4D8016622B1584700C6DA1B /* Startup.swift in Sources */, C42C49DB27C2806F0074ABAC /* MainMenu+FixMyValet.swift in Sources */, + C40175B229030F4600763A68 /* ValetInteractable.swift in Sources */, C48D6C70279CD2AC00F26D7E /* PhpVersionNumber.swift in Sources */, C4998F0A2617633900B2526E /* PreferencesWindowController.swift in Sources */, C46FA9882822EFDC00D78807 /* PhpConfigurationFile.swift in Sources */, @@ -1945,6 +1966,7 @@ C4C3643928AE4FCE00C0770E /* StatusMenu+Items.swift in Sources */, C4AC51FC27E27F47008528CA /* DomainListKindCell.swift in Sources */, C4CDA893288F1A71007CE25F /* Keys.swift in Sources */, + C40175B82903108900763A68 /* ValetInteractor.swift in Sources */, C4F361612836BFD9003598CC /* MainMenu+Actions.swift in Sources */, C46EBC4A28DB966A007ACC74 /* TestableShell.swift in Sources */, C44C198D276E3A1C0072762D /* TerminalProgressWindowController.swift in Sources */, @@ -2091,6 +2113,7 @@ C471E85C28F9BB650021E251 /* DomainListWindowController.swift in Sources */, C471E85D28F9BB650021E251 /* DomainListVC.swift in Sources */, C471E85E28F9BB650021E251 /* DomainListVC+ContextMenu.swift in Sources */, + C40175B429030F4600763A68 /* ValetInteractable.swift in Sources */, C4E2E86628FC2F1B003B070C /* XCPMApplication.swift in Sources */, C471E85F28F9BB650021E251 /* DomainListVC+Actions.swift in Sources */, C471E86028F9BB650021E251 /* SelectionVC.swift in Sources */, @@ -2098,6 +2121,7 @@ C471E86228F9BB650021E251 /* AddProxyVC.swift in Sources */, C471E86328F9BB650021E251 /* PMTableView.swift in Sources */, C471E86428F9BB650021E251 /* Warning.swift in Sources */, + C40175BA2903108900763A68 /* ValetInteractor.swift in Sources */, C471E86528F9BB650021E251 /* WarningManager.swift in Sources */, C471E86628F9BB650021E251 /* WarningsWindowController.swift in Sources */, C471E86728F9BB650021E251 /* OnboardingWindowController.swift in Sources */, @@ -2195,6 +2219,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C40175B529030F4600763A68 /* ValetInteractable.swift in Sources */, C471E89028F9BB8F0021E251 /* AlertableError.swift in Sources */, C471E89128F9BB8F0021E251 /* Errors.swift in Sources */, C471E89228F9BB8F0021E251 /* Alert.swift in Sources */, @@ -2302,6 +2327,7 @@ C471E81228F9BAE80021E251 /* TimeIntervalExtension.swift in Sources */, C471E7DF28F9BAAB0021E251 /* RealCommand.swift in Sources */, C471E7E028F9BAAB0021E251 /* ActiveCommand.swift in Sources */, + C40175BB2903108900763A68 /* ValetInteractor.swift in Sources */, C471E80928F9BADC0021E251 /* CreatedFromFile.swift in Sources */, C471E80128F9BAD40021E251 /* ActivePhpInstallation.swift in Sources */, C471E80228F9BAD40021E251 /* PhpInstallation.swift in Sources */, @@ -2429,6 +2455,7 @@ C485706D28BF450900539B36 /* NSMenuItemExtension.swift in Sources */, C481F79726164A78004FBCFF /* PrefsVC.swift in Sources */, C495F5B028A42E080087F70A /* EnvironmentCheck.swift in Sources */, + C40175B329030F4600763A68 /* ValetInteractable.swift in Sources */, C41E871B2763D42300161EE0 /* DomainListVC+ContextMenu.swift in Sources */, C40C7F3127722E8D00DDDCDC /* Logger.swift in Sources */, C4068CAB27B0890D00544CD5 /* MenuBarIcons.swift in Sources */, @@ -2440,6 +2467,7 @@ C4E49DEE28F764A00026AC4E /* TestableCommand.swift in Sources */, C484437C2804BB560041A78A /* ValetProxyScanner.swift in Sources */, C4AF9F78275447F100D44ED0 /* ValetConfigurationTest.swift in Sources */, + C40175B92903108900763A68 /* ValetInteractor.swift in Sources */, C4CE3BBC27B324250086CA49 /* ComposerWindow.swift in Sources */, C40B24F427A310830018C7D2 /* StatusMenu.swift in Sources */, C417DC75277614690015E6EE /* Helpers.swift in Sources */, diff --git a/phpmon/Domain/Integrations/Valet/DomainListable.swift b/phpmon/Domain/Integrations/Valet/Domains/DomainListable.swift similarity index 100% rename from phpmon/Domain/Integrations/Valet/DomainListable.swift rename to phpmon/Domain/Integrations/Valet/Domains/DomainListable.swift diff --git a/phpmon/Domain/Integrations/Valet/Domains/ValetInteractable.swift b/phpmon/Domain/Integrations/Valet/Domains/ValetInteractable.swift new file mode 100644 index 0000000..21ecfab --- /dev/null +++ b/phpmon/Domain/Integrations/Valet/Domains/ValetInteractable.swift @@ -0,0 +1,41 @@ +// +// ValetInteractable.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 21/10/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import Foundation + +protocol DomainInteractable { + + func secure() async throws + + func unsecure() async throws + + func isolate(version: PhpVersionNumber) async throws + + func unlink() async throws + +} + +extension ValetSite: DomainInteractable { + + func secure() async throws { + try await ValetInteractor.secure(site: self) + } + + func unsecure() async throws { + try await ValetInteractor.unsecure(site: self) + } + + func isolate(version: PhpVersionNumber) async throws { + try await ValetInteractor.isolate(site: self, version: version) + } + + func unlink() async throws { + try await ValetInteractor.unlink(site: self) + } + +} diff --git a/phpmon/Domain/Integrations/Valet/Domains/ValetInteractor.swift b/phpmon/Domain/Integrations/Valet/Domains/ValetInteractor.swift new file mode 100644 index 0000000..2fe0a33 --- /dev/null +++ b/phpmon/Domain/Integrations/Valet/Domains/ValetInteractor.swift @@ -0,0 +1,29 @@ +// +// ValetInteractor.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 21/10/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import Foundation + +class ValetInteractor { + + public static func secure(site: ValetSite) async throws { + // TODO + } + + public static func unsecure(site: ValetSite) async throws { + // TODO + } + + public static func isolate(site: ValetSite, version: PhpVersionNumber) async throws { + // TODO + } + + public static func unlink(site: ValetSite) async throws { + // TODO + } + +} diff --git a/phpmon/Domain/Integrations/Valet/Sites/SiteScanner/FakeSiteScanner.swift b/phpmon/Domain/Integrations/Valet/Sites/SiteScanner/FakeSiteScanner.swift index 4291f58..a7c2cc7 100644 --- a/phpmon/Domain/Integrations/Valet/Sites/SiteScanner/FakeSiteScanner.swift +++ b/phpmon/Domain/Integrations/Valet/Sites/SiteScanner/FakeSiteScanner.swift @@ -8,22 +8,22 @@ class FakeSiteScanner: SiteScanner { let fakes = [ - ValetSite(fakeWithName: "laravel", tld: "test", secure: true, + FakeValetSite(fakeWithName: "laravel", tld: "test", secure: true, path: "~/Code/laravel/framework", linked: true), - ValetSite(fakeWithName: "tailwind", tld: "test", secure: true, + FakeValetSite(fakeWithName: "tailwind", tld: "test", secure: true, path: "~/Code/tailwind/site", linked: true, constraint: "8.0"), - ValetSite(fakeWithName: "forge", tld: "test", secure: true, + FakeValetSite(fakeWithName: "forge", tld: "test", secure: true, path: "~/Code/laravel/forge", linked: true), - ValetSite(fakeWithName: "concord", tld: "test", secure: false, + FakeValetSite(fakeWithName: "concord", tld: "test", secure: false, path: "~/Code/concord", linked: true, driver: "Laravel (^8.0)", constraint: "^7.4", isolated: "7.4"), - ValetSite(fakeWithName: "drupal", tld: "test", secure: false, + FakeValetSite(fakeWithName: "drupal", tld: "test", secure: false, path: "~/Sites/drupal", linked: false, driver: "Drupal", constraint: "^7.4", isolated: "7.4"), - ValetSite(fakeWithName: "wordpress", tld: "test", secure: false, + FakeValetSite(fakeWithName: "wordpress", tld: "test", secure: false, path: "~/Sites/wordpress", linked: false, driver: "WordPress", constraint: "^7.4", isolated: "7.4") ] diff --git a/phpmon/Domain/Integrations/Valet/Sites/ValetSite+Fake.swift b/phpmon/Domain/Integrations/Valet/Sites/ValetSite+Fake.swift index 98df3b3..5e511cf 100644 --- a/phpmon/Domain/Integrations/Valet/Sites/ValetSite+Fake.swift +++ b/phpmon/Domain/Integrations/Valet/Sites/ValetSite+Fake.swift @@ -8,8 +8,7 @@ import Foundation -extension ValetSite { - +class FakeValetSite: ValetSite { convenience init( fakeWithName name: String, tld: String, @@ -44,5 +43,4 @@ extension ValetSite { .isEmpty }.contains(true) } - } diff --git a/phpmon/Domain/SwiftUI/Domains/VersionPopoverView.swift b/phpmon/Domain/SwiftUI/Domains/VersionPopoverView.swift index a16579e..9ce4f11 100644 --- a/phpmon/Domain/SwiftUI/Domains/VersionPopoverView.swift +++ b/phpmon/Domain/SwiftUI/Domains/VersionPopoverView.swift @@ -121,7 +121,7 @@ struct DisclaimerView: View { struct VersionPopoverView_Previews: PreviewProvider { static var previews: some View { VersionPopoverView( - site: ValetSite( + site: FakeValetSite( fakeWithName: "amazingwebsite", tld: "test", secure: true, @@ -135,7 +135,7 @@ struct VersionPopoverView_Previews: PreviewProvider { .previewDisplayName("Unknown Requirement") VersionPopoverView( - site: ValetSite( + site: FakeValetSite( fakeWithName: "amazingwebsite", tld: "test", secure: true, @@ -148,7 +148,7 @@ struct VersionPopoverView_Previews: PreviewProvider { ) .previewDisplayName("Requirement Matches") VersionPopoverView( - site: ValetSite( + site: FakeValetSite( fakeWithName: "anothersite", tld: "test", secure: true, @@ -162,7 +162,7 @@ struct VersionPopoverView_Previews: PreviewProvider { ) .previewDisplayName("Isolated") VersionPopoverView( - site: ValetSite( + site: FakeValetSite( fakeWithName: "anothersite", tld: "test", secure: true, @@ -176,7 +176,7 @@ struct VersionPopoverView_Previews: PreviewProvider { ) .previewDisplayName("Isolated Mismatch") VersionPopoverView( - site: ValetSite( + site: FakeValetSite( fakeWithName: "anothersite", tld: "test", secure: true,