diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 4f52a66..afff5a5 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -365,14 +365,14 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 8M54J5J787; INFOPLIST_FILE = phpmon/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -387,14 +387,14 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 8M54J5J787; INFOPLIST_FILE = phpmon/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.7; + MARKETING_VERSION = 1.8; PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/phpmon/Classes/Commands/Actions.swift b/phpmon/Classes/Commands/Actions.swift index 5dd5b35..51b0ec7 100644 --- a/phpmon/Classes/Commands/Actions.swift +++ b/phpmon/Classes/Commands/Actions.swift @@ -26,6 +26,15 @@ class Actions { return versionsOnly } + public static func restartPhpFpm() { + let version = App.shared.currentVersion!.short + if (version == Constants.LatestPhpVersion) { + Shell.user.run("sudo brew services restart php") + } else { + Shell.user.run("sudo brew services restart php@\(version)") + } + } + public static func switchToPhpVersion(version: String, availableVersions: [String]) { availableVersions.forEach { (version) in // Unlink the current version diff --git a/phpmon/Singletons/MainMenu.swift b/phpmon/Singletons/MainMenu.swift index 097e9cb..182a4f8 100644 --- a/phpmon/Singletons/MainMenu.swift +++ b/phpmon/Singletons/MainMenu.swift @@ -57,9 +57,11 @@ class MainMenu: NSObject, NSWindowDelegate { menu.addItem(menuItem) } menu.addItem(NSMenuItem.separator()) + menu.addItem(NSMenuItem(title: "Restart php-fpm service", action: #selector(self.restartService), keyEquivalent: "r")) + menu.addItem(NSMenuItem.separator()) } if (App.shared.busy) { - menu.addItem(NSMenuItem(title: "Switching PHP versions...", action: nil, keyEquivalent: "")) + menu.addItem(NSMenuItem(title: "PHP Monitor is busy...", action: nil, keyEquivalent: "")) menu.addItem(NSMenuItem.separator()) } if (App.shared.currentVersion != nil) { @@ -127,6 +129,26 @@ class MainMenu: NSObject, NSWindowDelegate { self.update() } + @objc func setBusyImage() { + DispatchQueue.main.async { + self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!) + } + } + + @objc public func restartService() { + App.shared.busy = true + self.setBusyImage() + DispatchQueue.global(qos: .userInitiated).async { [unowned self] in + self.update() + Actions.restartPhpFpm() + App.shared.busy = false + DispatchQueue.main.async { + self.updatePhpVersionInStatusBar() + self.update() + } + } + } + @objc public func openAbout() { NSApplication.shared.activate(ignoringOtherApps: true) NSApplication.shared.orderFrontStandardAboutPanel() @@ -137,7 +159,7 @@ class MainMenu: NSObject, NSWindowDelegate { } @objc public func switchToPhpVersion(sender: AnyObject) { - self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!) + self.setBusyImage() let index = sender.tag! let version = App.shared.availablePhpVersions[index] App.shared.busy = true