1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-11-06 12:50:06 +01:00

👌 Avoid certain things when Valet-less

This commit is contained in:
2023-02-26 15:23:10 +01:00
parent 089ebe7b4e
commit 98fcb686bf
5 changed files with 69 additions and 42 deletions

View File

@@ -28,7 +28,7 @@ class InternalSwitcher: PhpSwitcher {
for available in PhpEnv.shared.availablePhpVersions { for available in PhpEnv.shared.availablePhpVersions {
group.addTask { group.addTask {
await self.disableDefaultPhpFpmPool(available) await self.disableDefaultPhpFpmPool(available)
await self.stopPhpVersion(available) await self.unlinkAndStopPhpVersion(available)
return available return available
} }
} }
@@ -43,11 +43,13 @@ class InternalSwitcher: PhpSwitcher {
for formula in versions { for formula in versions {
Log.info("Will start PHP \(version)... (primary: \(version == formula))") Log.info("Will start PHP \(version)... (primary: \(version == formula))")
await self.startPhpVersion(formula, primary: (version == formula)) await self.linkAndStartPhpVersion(formula, primary: (version == formula))
} }
Log.info("Restarting nginx, just to be sure!") if Valet.installed {
await brew("services restart nginx", sudo: true) Log.info("Restarting nginx, just to be sure!")
await brew("services restart nginx", sudo: true)
}
Log.info("The new version(s) have been linked!") Log.info("The new version(s) have been linked!")
}) })
@@ -75,6 +77,12 @@ class InternalSwitcher: PhpSwitcher {
} }
func disableDefaultPhpFpmPool(_ version: String) async { func disableDefaultPhpFpmPool(_ version: String) async {
if Valet.installed {
Log.info("Skipping adjustment of php-fpm.d pools, because Valet is disabled or not installed.")
Log.info("This behaviour may not be desirable with this system configuration.")
return
}
let pool = "\(Paths.etcPath)/php/\(version)/php-fpm.d/www.conf" let pool = "\(Paths.etcPath)/php/\(version)/php-fpm.d/www.conf"
if FileSystem.fileExists(pool) { if FileSystem.fileExists(pool) {
Log.info("A default `www.conf` file was found in the php-fpm.d directory for PHP \(version).") Log.info("A default `www.conf` file was found in the php-fpm.d directory for PHP \(version).")
@@ -94,31 +102,36 @@ class InternalSwitcher: PhpSwitcher {
} }
} }
func stopPhpVersion(_ version: String) async { func unlinkAndStopPhpVersion(_ version: String) async {
let formula = (version == PhpEnv.brewPhpAlias) ? "php" : "php@\(version)" let formula = (version == PhpEnv.brewPhpAlias) ? "php" : "php@\(version)"
await brew("unlink \(formula)") await brew("unlink \(formula)")
await brew("services stop \(formula)", sudo: true)
Log.info("Unlinked and stopped services for \(formula)") if Valet.installed {
await brew("services stop \(formula)", sudo: true)
Log.info("Unlinked and stopped services for \(formula)")
} else {
Log.info("Unlinked \(formula)")
}
} }
func startPhpVersion(_ version: String, primary: Bool) async { func linkAndStartPhpVersion(_ version: String, primary: Bool) async {
let formula = (version == PhpEnv.brewPhpAlias) ? "php" : "php@\(version)" let formula = (version == PhpEnv.brewPhpAlias) ? "php" : "php@\(version)"
if primary { if primary {
Log.info("\(formula) is the primary formula, linking and starting services...") Log.info("\(formula) is the primary formula, linking...")
await brew("link \(formula) --overwrite --force") await brew("link \(formula) --overwrite --force")
} else { } else {
Log.info("\(formula) is an isolated PHP version, starting services only...") Log.info("\(formula) is an isolated PHP version, not linking!")
} }
await brew("services start \(formula)", sudo: true) if Valet.installed {
await brew("services start \(formula)", sudo: true)
}
if Valet.enabled(feature: .isolatedSites) && primary { if Valet.enabled(feature: .isolatedSites) && primary {
let socketVersion = version.replacingOccurrences(of: ".", with: "") let socketVersion = version.replacingOccurrences(of: ".", with: "")
await Shell.quiet("ln -sF ~/.config/valet/valet\(socketVersion).sock ~/.config/valet/valet.sock") await Shell.quiet("ln -sF ~/.config/valet/valet\(socketVersion).sock ~/.config/valet/valet.sock")
Log.info("Symlinked new socket version (valet\(socketVersion).sock → valet.sock).") Log.info("Symlinked new socket version (valet\(socketVersion).sock → valet.sock).")
} }
} }
} }

View File

@@ -88,8 +88,8 @@ class HomebrewDiagnostics {
versions.forEach { version in versions.forEach { version in
Task { // Fix each pool concurrently (but perform the tasks sequentially) Task { // Fix each pool concurrently (but perform the tasks sequentially)
await switcher.disableDefaultPhpFpmPool(version) await switcher.disableDefaultPhpFpmPool(version)
await switcher.stopPhpVersion(version) await switcher.unlinkAndStopPhpVersion(version)
await switcher.startPhpVersion(version, primary: version == primary) await switcher.linkAndStartPhpVersion(version, primary: version == primary)
} }
} }
} }

View File

@@ -19,7 +19,9 @@ extension MainMenu {
PhpEnv.shared.isBusy = false PhpEnv.shared.isBusy = false
Task { // Things to do after reloading domain list data Task { // Things to do after reloading domain list data
await self.reloadDomainListData() if Valet.installed {
await self.reloadDomainListData()
}
// Perform UI updates on main thread // Perform UI updates on main thread
Task { @MainActor [self] in Task { @MainActor [self] in

View File

@@ -286,42 +286,54 @@ extension StatusMenu {
func addFirstAidAndServicesMenuItems() { func addFirstAidAndServicesMenuItems() {
let services = NSMenuItem(title: "mi_other".localized) let services = NSMenuItem(title: "mi_other".localized)
let servicesMenu = NSMenu() var items: [NSMenuItem] = [
servicesMenu.addItems([
// FIRST AID // FIRST AID
HeaderView.asMenuItem(text: "mi_first_aid".localized), HeaderView.asMenuItem(text: "mi_first_aid".localized),
NSMenuItem(title: "mi_view_onboarding".localized, action: #selector(MainMenu.showWelcomeTour)), NSMenuItem(title: "mi_view_onboarding".localized, action: #selector(MainMenu.showWelcomeTour)),
NSMenuItem(title: "mi_fa_php_doctor".localized, action: #selector(MainMenu.openWarnings)), NSMenuItem(title: "mi_fa_php_doctor".localized, action: #selector(MainMenu.openWarnings))
NSMenuItem.separator(), ]
NSMenuItem(title: "mi_fix_my_valet".localized(PhpEnv.brewPhpAlias),
action: #selector(MainMenu.fixMyValet),
toolTip: "mi_fix_my_valet_tooltip".localized),
NSMenuItem(title: "mi_fix_brew_permissions".localized(), action: #selector(MainMenu.fixHomebrewPermissions),
toolTip: "mi_fix_brew_permissions_tooltip".localized),
NSMenuItem.separator(),
// SERVICES if Valet.installed {
HeaderView.asMenuItem(text: "mi_services".localized), items.append(contentsOf: [
NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq), NSMenuItem.separator(),
keyEquivalent: "d"), NSMenuItem(title: "mi_fix_my_valet".localized(PhpEnv.brewPhpAlias),
NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm), action: #selector(MainMenu.fixMyValet),
keyEquivalent: "p"), toolTip: "mi_fix_my_valet_tooltip".localized),
NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx), NSMenuItem(title: "mi_fix_brew_permissions".localized(),
keyEquivalent: "n"), action: #selector(MainMenu.fixHomebrewPermissions),
NSMenuItem(title: "mi_restart_valet_services".localized, action: #selector(MainMenu.restartValetServices), toolTip: "mi_fix_brew_permissions_tooltip".localized),
keyEquivalent: "s"), NSMenuItem.separator(),
NSMenuItem(title: "mi_stop_valet_services".localized, action: #selector(MainMenu.stopValetServices),
keyEquivalent: "s",
keyModifier: [.command, .shift]),
NSMenuItem.separator(),
// SERVICES
HeaderView.asMenuItem(text: "mi_services".localized),
NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq),
keyEquivalent: "d"),
NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm),
keyEquivalent: "p"),
NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx),
keyEquivalent: "n"),
NSMenuItem(title: "mi_restart_valet_services".localized,
action: #selector(MainMenu.restartValetServices),
keyEquivalent: "s"),
NSMenuItem(title: "mi_stop_valet_services".localized, action: #selector(MainMenu.stopValetServices),
keyEquivalent: "s",
keyModifier: [.command, .shift]),
NSMenuItem.separator()
])
} else {
items.append(NSMenuItem.separator())
}
items.append(contentsOf: [
// MANUAL ACTIONS // MANUAL ACTIONS
HeaderView.asMenuItem(text: "mi_manual_actions".localized), HeaderView.asMenuItem(text: "mi_manual_actions".localized),
NSMenuItem(title: "mi_php_refresh".localized, NSMenuItem(title: "mi_php_refresh".localized,
action: #selector(MainMenu.reloadPhpMonitorMenuInForeground), action: #selector(MainMenu.reloadPhpMonitorMenuInForeground),
keyEquivalent: "r") keyEquivalent: "r")
], target: MainMenu.shared) ])
let servicesMenu = NSMenu()
servicesMenu.addItems(items, target: MainMenu.shared)
setSubmenu(servicesMenu, for: services) setSubmenu(servicesMenu, for: services)
addItem(services) addItem(services)
} }

View File

@@ -17,7 +17,7 @@ class StatusMenu: NSMenu {
addItem(NSMenuItem.separator()) addItem(NSMenuItem.separator())
} }
if PhpEnv.phpInstall != nil && Preferences.isEnabled(.displayServicesManager) { if PhpEnv.phpInstall != nil && Valet.installed && Preferences.isEnabled(.displayServicesManager) {
addServicesManagerMenuItem() addServicesManagerMenuItem()
addItem(NSMenuItem.separator()) addItem(NSMenuItem.separator())
} }