From 61528cea466f8e5769226af51662736de693bab8 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Wed, 14 Sep 2022 19:05:14 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 6 ++++ phpmon/Domain/App/App.swift | 3 ++ phpmon/Domain/App/EnvironmentManager.swift | 34 ++++++++++++++++++++++ phpmon/Domain/Menu/MainMenu+Startup.swift | 2 ++ 4 files changed, 45 insertions(+) create mode 100644 phpmon/Domain/App/EnvironmentManager.swift diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index cfb89ae..39844d6 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -191,6 +191,8 @@ C495F5B028A42E080087F70A /* EnvironmentCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = C495F5AE28A42E080087F70A /* EnvironmentCheck.swift */; }; C4998F0A2617633900B2526E /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PreferencesWindowController.swift */; }; C4998F0B2617633900B2526E /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4998F092617633900B2526E /* PreferencesWindowController.swift */; }; + C4A6957628D23EE300A14CF8 /* EnvironmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */; }; + C4A6957728D23EE300A14CF8 /* EnvironmentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */; }; C4A81CA428C67101008DD9D1 /* PMTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A81CA328C67101008DD9D1 /* PMTableView.swift */; }; C4A81CA528C67101008DD9D1 /* PMTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A81CA328C67101008DD9D1 /* PMTableView.swift */; }; C4AC51FC27E27F47008528CA /* DomainListKindCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AC51FB27E27F47008528CA /* DomainListKindCell.swift */; }; @@ -432,6 +434,7 @@ C4930849279F331F009C240B /* AddSiteVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSiteVC.swift; sourceTree = ""; }; C495F5AE28A42E080087F70A /* EnvironmentCheck.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvironmentCheck.swift; sourceTree = ""; }; C4998F092617633900B2526E /* PreferencesWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; + C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvironmentManager.swift; sourceTree = ""; }; C4A81CA328C67101008DD9D1 /* PMTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PMTableView.swift; sourceTree = ""; }; C4AC51FB27E27F47008528CA /* DomainListKindCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DomainListKindCell.swift; sourceTree = ""; }; C4ACA38E25C754C100060C66 /* PhpExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpExtension.swift; sourceTree = ""; }; @@ -934,6 +937,7 @@ C46E206C28299B3800D909D6 /* AppUpdateChecker.swift */, C40FE736282ABA4F00A302C2 /* AppVersion.swift */, C45E76132854A65300B4FE0C /* ServicesManager.swift */, + C4A6957528D23EE300A14CF8 /* EnvironmentManager.swift */, ); path = App; sourceTree = ""; @@ -1333,6 +1337,7 @@ C4E4404627C56F4700D225E1 /* ValetSite.swift in Sources */, C4F2E43A2752F7D00020E974 /* PhpInstallation.swift in Sources */, C4D9F24B280B69E100DCD39A /* AddProxyVC.swift in Sources */, + C4A6957628D23EE300A14CF8 /* EnvironmentManager.swift in Sources */, C41E871A2763D42300161EE0 /* DomainListVC+ContextMenu.swift in Sources */, C40C7F2827721FF600DDDCDC /* ActivePhpInstallation+Checks.swift in Sources */, C463E380284930EE00422731 /* PresetHelper.swift in Sources */, @@ -1578,6 +1583,7 @@ C4D9F24C280B69E100DCD39A /* AddProxyVC.swift in Sources */, C4B5853F2770FE3900DA4FBE /* Paths.swift in Sources */, C481F79A26164A7C004FBCFF /* Preferences.swift in Sources */, + C4A6957728D23EE300A14CF8 /* EnvironmentManager.swift in Sources */, C4E0F7EE27BEBDA9007475F2 /* NSWindowExtension.swift in Sources */, C4A81CA528C67101008DD9D1 /* PMTableView.swift in Sources */, C4B585422770FE3900DA4FBE /* Shell.swift in Sources */, diff --git a/phpmon/Domain/App/App.swift b/phpmon/Domain/App/App.swift index df288d8..308b099 100644 --- a/phpmon/Domain/App/App.swift +++ b/phpmon/Domain/App/App.swift @@ -47,6 +47,9 @@ class App { // MARK: Variables + /** Technical information about the current environment. */ + var environment = EnvironmentManager() + /** The list of preferences that are currently active. */ var preferences: [PreferenceName: Bool]! diff --git a/phpmon/Domain/App/EnvironmentManager.swift b/phpmon/Domain/App/EnvironmentManager.swift new file mode 100644 index 0000000..7417e1c --- /dev/null +++ b/phpmon/Domain/App/EnvironmentManager.swift @@ -0,0 +1,34 @@ +// +// EnvironmentManager.swift +// PHP Monitor +// +// Created by Nico Verbruggen on 14/09/2022. +// Copyright © 2022 Nico Verbruggen. All rights reserved. +// + +import Foundation + +public class EnvironmentManager { + var values: [EnvironmentProperty: Bool] = [:] + + public func process() async { + self.values[.hasValetInstalled] = !{ + let output = valet("--version", sudo: false) + // Failure condition #1: does not contain Laravel Valet + if !output.contains("Laravel Valet") { + return true + } + // Extract the version number + Valet.shared.version = VersionExtractor.from(output) + // Get the actual version + return Valet.shared.version == nil + }() // returns true if none of the failure conditions are met + + dump(self.values) + } +} + +public enum EnvironmentProperty { + case hasHomebrewInstalled + case hasValetInstalled +} diff --git a/phpmon/Domain/Menu/MainMenu+Startup.swift b/phpmon/Domain/Menu/MainMenu+Startup.swift index 4071bc0..1b90d57 100644 --- a/phpmon/Domain/Menu/MainMenu+Startup.swift +++ b/phpmon/Domain/Menu/MainMenu+Startup.swift @@ -18,6 +18,8 @@ extension MainMenu { self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!) } + await App.shared.environment.process() + if await Startup().checkEnvironment() { self.onEnvironmentPass() } else {