diff --git a/phpmon/Domain/Integrations/Homebrew/BrewDiagnostics.swift b/phpmon/Domain/Integrations/Homebrew/BrewDiagnostics.swift index 8a6eb68..f16ed14 100644 --- a/phpmon/Domain/Integrations/Homebrew/BrewDiagnostics.swift +++ b/phpmon/Domain/Integrations/Homebrew/BrewDiagnostics.swift @@ -27,6 +27,21 @@ class BrewDiagnostics { } } + /** + Logs a bunch of useful information during startup. + */ + public static func logBootInformation() { + Log.info(BrewDiagnostics.customCaskInstalled + ? "[BREW] The app has been installed via Homebrew Cask." + : "[BREW] The app has been installed directly (optimal)." + ) + + Log.info(BrewDiagnostics.usesNginxFullFormula + ? "[BREW] The app will be using the `nginx-full` formula." + : "[BREW] The app will be using the `nginx` formula." + ) + } + /** Determines whether the PHP Monitor Cask is installed. */ @@ -68,9 +83,10 @@ class BrewDiagnostics { if let destination = try? FileSystem.getDestinationOfSymlink("\(Paths.optPath)/\(symlink)") { if !destination.contains("Cellar/php/\(version)") && !destination.contains("Cellar/php@\(version)") { - Log.err("Symlink for \(symlink) is incorrect and was likely not purged correctly after upgrading. Removing...") + Log.err("Symlink for \(symlink) is incorrect. Removing...") do { try FileSystem.remove("\(Paths.optPath)/\(symlink)") + Log.info("Incorrect symlink for \(symlink) has been successfully removed.") } catch { Log.err("Symlink for \(symlink) was incorrect but could not be removed!") } diff --git a/phpmon/Domain/Menu/MainMenu+Startup.swift b/phpmon/Domain/Menu/MainMenu+Startup.swift index 34ce7f5..58a555b 100644 --- a/phpmon/Domain/Menu/MainMenu+Startup.swift +++ b/phpmon/Domain/Menu/MainMenu+Startup.swift @@ -38,16 +38,8 @@ extension MainMenu { // Initialize preferences _ = Preferences.shared - // Determine install method - Log.info(BrewDiagnostics.customCaskInstalled - ? "[BREW] The app has been installed via Homebrew Cask." - : "[BREW] The app has been installed directly (optimal)." - ) - - Log.info(BrewDiagnostics.usesNginxFullFormula - ? "[BREW] The app will be using the `nginx-full` formula." - : "[BREW] The app will be using the `nginx` formula." - ) + // Put some useful diagnostics information in log + BrewDiagnostics.logBootInformation() // Attempt to find out more info about Valet if Valet.shared.version != nil { @@ -76,7 +68,6 @@ extension MainMenu { WarningManager.shared.evaluateWarnings() // Set up the config watchers on launch (updated automatically when switching) - Log.info("Setting up watchers...") App.shared.handlePhpConfigWatcher() // Detect built-in and custom applications @@ -111,6 +102,27 @@ extension MainMenu { // Find out which services are active Log.info("The services manager knows about \(ServicesManager.shared.services.count) services.") + // Post-launch stats and update check, but only if not running tests + await performPostLaunchActions() + + // Check if the linked version has changed between launches of phpmon + PhpGuard().compareToLastGlobalVersion() + + // We are ready! + PhpEnvironments.shared.isBusy = false + + // Finally! + Log.info("PHP Monitor is ready to serve!") + + // Check if we upgraded from a previous version + AppUpdater.checkIfUpdateWasPerformed() + } + + /** + Performs a set of post-launch actions, like incrementing stats and checking for updates. + (This code is skipped when running SwiftUI previews.) + */ + private func performPostLaunchActions() async { if !isRunningSwiftUIPreview { Stats.incrementSuccessfulLaunchCount() Stats.evaluateSponsorMessageShouldBeDisplayed() @@ -124,16 +136,6 @@ extension MainMenu { await AppUpdater().checkForUpdates(userInitiated: false) } } - - // Check if the linked version has changed between launches of phpmon - PhpGuard().compareToLastGlobalVersion() - - // We are ready! - PhpEnvironments.shared.isBusy = false - Log.info("PHP Monitor is ready to serve!") - - // Check if we upgraded just now - AppUpdater.checkIfUpdateWasPerformed() } /**