1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 03:50:08 +02: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 {
group.addTask {
await self.disableDefaultPhpFpmPool(available)
await self.stopPhpVersion(available)
await self.unlinkAndStopPhpVersion(available)
return available
}
}
@ -43,11 +43,13 @@ class InternalSwitcher: PhpSwitcher {
for formula in versions {
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!")
await brew("services restart nginx", sudo: true)
if Valet.installed {
Log.info("Restarting nginx, just to be sure!")
await brew("services restart nginx", sudo: true)
}
Log.info("The new version(s) have been linked!")
})
@ -75,6 +77,12 @@ class InternalSwitcher: PhpSwitcher {
}
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"
if FileSystem.fileExists(pool) {
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)"
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)"
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")
} 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 {
let socketVersion = version.replacingOccurrences(of: ".", with: "")
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).")
}
}
}

View File

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

View File

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

View File

@ -286,42 +286,54 @@ extension StatusMenu {
func addFirstAidAndServicesMenuItems() {
let services = NSMenuItem(title: "mi_other".localized)
let servicesMenu = NSMenu()
servicesMenu.addItems([
var items: [NSMenuItem] = [
// FIRST AID
HeaderView.asMenuItem(text: "mi_first_aid".localized),
NSMenuItem(title: "mi_view_onboarding".localized, action: #selector(MainMenu.showWelcomeTour)),
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(),
NSMenuItem(title: "mi_fa_php_doctor".localized, action: #selector(MainMenu.openWarnings))
]
// 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(),
if Valet.installed {
items.append(contentsOf: [
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
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
HeaderView.asMenuItem(text: "mi_manual_actions".localized),
NSMenuItem(title: "mi_php_refresh".localized,
action: #selector(MainMenu.reloadPhpMonitorMenuInForeground),
keyEquivalent: "r")
], target: MainMenu.shared)
])
let servicesMenu = NSMenu()
servicesMenu.addItems(items, target: MainMenu.shared)
setSubmenu(servicesMenu, for: services)
addItem(services)
}

View File

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