diff --git a/phpmon/Domain/Core/Actions.swift b/phpmon/Domain/Core/Actions.swift index f5832e0..5bbc098 100644 --- a/phpmon/Domain/Core/Actions.swift +++ b/phpmon/Domain/Core/Actions.swift @@ -23,7 +23,7 @@ class Actions { let phpAlias = App.shared.brewPhpVersion // Avoid inserting a duplicate - if (!versionsOnly.contains(phpAlias)) { + if (!versionsOnly.contains(phpAlias) && Shell.fileExists("\(Paths.optPath)/php/bin/php")) { versionsOnly.append(phpAlias); } diff --git a/phpmon/Domain/Integrations/Valet/Valet.swift b/phpmon/Domain/Integrations/Valet/Valet.swift index fb108a9..40e368e 100644 --- a/phpmon/Domain/Integrations/Valet/Valet.swift +++ b/phpmon/Domain/Integrations/Valet/Valet.swift @@ -24,7 +24,10 @@ class Valet { init() { version = Actions.valet("--version") .replacingOccurrences(of: "Laravel Valet ", with: "") + // TODO: Use regular expression to avoid deprecation notices + .split(separator: "\n").last? .trimmingCharacters(in: .whitespacesAndNewlines) + ?? "UNKNOWN" let file = FileManager.default.homeDirectoryForCurrentUser .appendingPathComponent(".config/valet/config.json") diff --git a/phpmon/Domain/Menu/MainMenu.swift b/phpmon/Domain/Menu/MainMenu.swift index ad2d4db..0f59593 100644 --- a/phpmon/Domain/Menu/MainMenu.swift +++ b/phpmon/Domain/Menu/MainMenu.swift @@ -114,7 +114,6 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate { menu.addItem(NSMenuItem.separator()) // Add Valet interactions - menu.addValetMenuItems() // Add information about services & actions diff --git a/phpmon/Domain/Menu/StatusMenu.swift b/phpmon/Domain/Menu/StatusMenu.swift index 0d6dfc8..0cf59eb 100644 --- a/phpmon/Domain/Menu/StatusMenu.swift +++ b/phpmon/Domain/Menu/StatusMenu.swift @@ -81,11 +81,28 @@ class StatusMenu : NSMenu { } self.setSubmenu(servicesMenu, for: services) - self.addItem(NSMenuItem(title: "mi_force_load_latest".localized, action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f")) + self.addForceLoadLatestVersion() + self.addItem(services) self.addItem(NSMenuItem(title: "mi_restart_all_services".localized, action: #selector(MainMenu.restartAllServices), keyEquivalent: "s")) } + func addForceLoadLatestVersion() { + if !App.shared.availablePhpVersions.contains(App.shared.brewPhpVersion) { + self.addItem(NSMenuItem( + title: "mi_force_load_latest_unavailable".localized + .replacingOccurrences(of: "%@", with: App.shared.brewPhpVersion), + action: nil, keyEquivalent: "f" + )) + } else { + self.addItem(NSMenuItem( + title: "mi_force_load_latest".localized + .replacingOccurrences(of: "%@", with: App.shared.brewPhpVersion), + action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f")) + } + + } + func addValetMenuItems() { self.addItem(HeaderView.asMenuItem(text: "mi_valet".localized)) self.addItem(NSMenuItem(title: "mi_valet_config".localized, action: #selector(MainMenu.openValetConfigFolder), keyEquivalent: "v")) diff --git a/phpmon/Localizable.strings b/phpmon/Localizable.strings index 8fd1de6..c1adf28 100644 --- a/phpmon/Localizable.strings +++ b/phpmon/Localizable.strings @@ -25,7 +25,8 @@ "mi_manage_services" = "Manage services"; "mi_restart_all_services" = "Restart all services"; "mi_stop_all_services" = "Stop all services"; -"mi_force_load_latest" = "Force load latest PHP version"; +"mi_force_load_latest" = "Force load (latest) PHP %@"; +"mi_force_load_latest_unavailable" = "Force load unavailable (PHP %@ not installed)"; "mi_php_refresh" = "Refresh information"; "mi_configuration" = "Configuration";