mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
👌 Various improvements to PHP Version Manager
- A warning has been added if you are not running Homebrew 4.0, since running older (or newer) versions of Homebrew are not officially supported. This check is only displayed once per cold app boot. - The PHP Version Manager now shows the full version number for up-to-date PHP installations (mostly important for patch version). - You must now confirm the deletion of an installed version of PHP before PHP Monitor will uninstall that version. - It is no longer possible to press the refresh button if the app is already busy checking for updated PHP versions
This commit is contained in:
@ -3309,7 +3309,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG = YES;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
@ -3339,7 +3339,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG = NO;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
@ -3568,7 +3568,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEBUG = NO;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@ -3679,7 +3679,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEBUG = YES;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@ -3790,7 +3790,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEBUG = YES;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@ -3963,7 +3963,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1205;
|
||||
CURRENT_PROJECT_VERSION = 1210;
|
||||
DEBUG = NO;
|
||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
|
@ -14,6 +14,7 @@ class Alert {
|
||||
messageText: String,
|
||||
informativeText: String,
|
||||
buttonTitle: String = "generic.ok".localized,
|
||||
buttonIsDestructive: Bool = false,
|
||||
secondButtonTitle: String = "generic.cancel".localized,
|
||||
style: NSAlert.Style = .warning,
|
||||
onFirstButtonPressed: @escaping (() -> Void)
|
||||
@ -27,6 +28,7 @@ class Alert {
|
||||
alert.messageText = messageText
|
||||
alert.informativeText = informativeText
|
||||
alert.addButton(withTitle: buttonTitle)
|
||||
alert.buttons.first?.hasDestructiveAction = buttonIsDestructive
|
||||
if !secondButtonTitle.isEmpty {
|
||||
alert.addButton(withTitle: secondButtonTitle)
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ class Brew {
|
||||
Log.info("The user has Homebrew \(version.text) installed.")
|
||||
|
||||
if version.major < 4 {
|
||||
Log.warn("Managing PHP versions is only supported with Homebrew 4 or newer!")
|
||||
Log.warn("Managing PHP versions is only officially supported with Homebrew 4 or newer!")
|
||||
}
|
||||
} else {
|
||||
Log.warn("The Homebrew version could not be determined.")
|
||||
|
@ -35,11 +35,28 @@ struct PhpFormulaeView: View {
|
||||
|
||||
self.status = PhpFormulaeStatus(
|
||||
busy: true,
|
||||
title: "Checking for updates!",
|
||||
description: "Checking if any PHP version is outdated..."
|
||||
title: "phpman.busy.title".localized,
|
||||
description: "phpman.busy.description.outdated".localized
|
||||
)
|
||||
|
||||
Task { [self] in
|
||||
guard let version = Brew.shared.version else {
|
||||
return
|
||||
}
|
||||
|
||||
await delay(seconds: 1)
|
||||
|
||||
if version.major != 4 {
|
||||
Task { @MainActor in
|
||||
self.presentErrorAlert(
|
||||
title: "phpman.warnings.unsupported.title".localized,
|
||||
description: "phpman.warnings.unsupported.desc".localized(version.text),
|
||||
button: "generic.ok".localized,
|
||||
style: .warning
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
await PhpEnv.detectPhpVersions()
|
||||
await self.handler.refreshPhpVersions(loadOutdated: false)
|
||||
await self.handler.refreshPhpVersions(loadOutdated: true)
|
||||
@ -74,8 +91,8 @@ struct PhpFormulaeView: View {
|
||||
Task { // Reload warnings
|
||||
Task { @MainActor in
|
||||
self.status.busy = true
|
||||
self.status.title = "Checking for updates!"
|
||||
self.status.description = "Checking if any PHP version is outdated..."
|
||||
self.status.title = "phpman.busy.title".localized
|
||||
self.status.description = "phpman.busy.description.outdated".localized
|
||||
}
|
||||
await self.handler.refreshPhpVersions(loadOutdated: true)
|
||||
Task { @MainActor in
|
||||
@ -88,6 +105,7 @@ struct PhpFormulaeView: View {
|
||||
.controlSize(.large)
|
||||
}
|
||||
.focusable(false)
|
||||
.disabled(self.status.busy)
|
||||
|
||||
Text("phpman.refresh.button.description".localizedForSwiftUI)
|
||||
.foregroundColor(.gray)
|
||||
@ -112,26 +130,26 @@ struct PhpFormulaeView: View {
|
||||
.font(.system(size: 11))
|
||||
.foregroundColor(.gray)
|
||||
} else if formula.isInstalled && formula.installedVersion != nil {
|
||||
Text("Latest version is currently installed.").font(.system(size: 11))
|
||||
Text("\(formula.installedVersion!) is currently installed.").font(.system(size: 11))
|
||||
.foregroundColor(.gray)
|
||||
} else {
|
||||
Text("This version can be installed.")
|
||||
Text("phpman.version.available_for_installation".localizedForSwiftUI)
|
||||
.font(.system(size: 11))
|
||||
.foregroundColor(.gray)
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
if formula.isInstalled {
|
||||
Button("Uninstall") {
|
||||
Task { await self.uninstall(formula) }
|
||||
Button("phpman.buttons.uninstall".localizedForSwiftUI, role: .destructive) {
|
||||
Task { await self.confirmUninstall(formula) }
|
||||
}
|
||||
} else {
|
||||
Button("Install") {
|
||||
Button("phpman.buttons.install".localizedForSwiftUI) {
|
||||
Task { await self.install(formula) }
|
||||
}
|
||||
}
|
||||
if formula.hasUpgrade {
|
||||
Button("Update") {
|
||||
Button("phpman.buttons.update".localizedForSwiftUI) {
|
||||
Task { await self.install(formula) }
|
||||
}
|
||||
}
|
||||
@ -175,7 +193,7 @@ struct PhpFormulaeView: View {
|
||||
}
|
||||
}
|
||||
|
||||
public func uninstall(_ formula: BrewFormula) async {
|
||||
public func confirmUninstall(_ formula: BrewFormula) async {
|
||||
// Disallow removal of the currently active versipn
|
||||
if formula.installedVersion == PhpEnv.shared.currentInstall?.version.text {
|
||||
self.presentErrorAlert(
|
||||
@ -186,6 +204,21 @@ struct PhpFormulaeView: View {
|
||||
return
|
||||
}
|
||||
|
||||
Alert.confirm(
|
||||
onWindow: App.shared.versionManagerWindowController!.window!,
|
||||
messageText: "phpman.warnings.removal.title".localized(formula.displayName),
|
||||
informativeText: "phpman.warnings.removal.desc".localized(formula.displayName),
|
||||
buttonTitle: "phpman.warnings.removal.button".localized,
|
||||
buttonIsDestructive: true,
|
||||
secondButtonTitle: "generic.cancel".localized,
|
||||
style: .warning,
|
||||
onFirstButtonPressed: {
|
||||
Task { await self.uninstall(formula) }
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
public func uninstall(_ formula: BrewFormula) async {
|
||||
let command = RemovePhpVersionCommand(formula: formula.name)
|
||||
|
||||
do {
|
||||
@ -230,14 +263,19 @@ struct PhpFormulaeView: View {
|
||||
}
|
||||
}
|
||||
|
||||
public func presentErrorAlert(title: String, description: String, button: String) {
|
||||
public func presentErrorAlert(
|
||||
title: String,
|
||||
description: String,
|
||||
button: String,
|
||||
style: NSAlert.Style = .critical
|
||||
) {
|
||||
Alert.confirm(
|
||||
onWindow: App.shared.versionManagerWindowController!.window!,
|
||||
messageText: title,
|
||||
informativeText: description,
|
||||
buttonTitle: button,
|
||||
secondButtonTitle: "",
|
||||
style: .critical,
|
||||
style: style,
|
||||
onFirstButtonPressed: {}
|
||||
)
|
||||
}
|
||||
|
@ -90,13 +90,32 @@
|
||||
|
||||
// PHPMAN
|
||||
|
||||
"phpman.busy.title" = "Checking for updates!";
|
||||
"phpman.busy.description.outdated" = "Checking if any PHP version is outdated...";
|
||||
|
||||
"phpman.version.available_for_installation" = "This version can be installed";
|
||||
"phpman.buttons.uninstall" = "Uninstall";
|
||||
"phpman.buttons.install" = "Install";
|
||||
"phpman.buttons.update" = "Update";
|
||||
|
||||
"phpman.title" = "PHP Version Manager";
|
||||
"phpman.description" = "**PHP Version Manager** lets you install different PHP versions via Homebrew.";
|
||||
"phpman.disclaimer" = "Please note that installing or upgrading PHP versions may cause other Homebrew packages to be upgraded as well, but only if Homebrew would otherwise have broken those other packages via a shared dependency. (More in the FAQ!)";
|
||||
"phpman.disclaimer" = "Please note that installing or upgrading PHP versions may cause other Homebrew packages to be upgraded as well. For more information, please consult the FAQ.";
|
||||
"phpman.refresh.button" = "Search for Updates";
|
||||
"phpman.refresh.button.description" = "You can press this button to check (again) if any updates are available to installed PHP versions. When you first open this window, PHP Monitor already does this check.";
|
||||
"phpman.refresh.button.description" = "You can press the refresh button to check if any updates are available to installed PHP versions.";
|
||||
|
||||
"phpman.failures.install.title" = "Install failed!";
|
||||
"phpman.warnings.unsupported.title" = "Your version of Homebrew may cause issues";
|
||||
"phpman.warnings.unsupported.desc" = "No functionality is disabled, but some commands may not work as expected. You are currently running Homebrew %@.
|
||||
|
||||
Currently, Homebrew 4 is the only supported version for the PHP Version Manager. If you are running a newer version of Homebrew, you may wish to check if a newer version of PHP Monitor is available.";
|
||||
|
||||
"phpman.warnings.removal.title" = "Are you sure you want to uninstall %@?";
|
||||
"phpman.warnings.removal.desc" = "Please note that configuration files will not be removed, so it should be easy to reinstall later if needed.
|
||||
|
||||
You may be asked for your password during the uninstallation process if file permissions don't allow a simple removal.";
|
||||
"phpman.warnings.removal.button" = "Uninstall";
|
||||
|
||||
"phpman.failures.install.title" = "Installation failed!";
|
||||
"phpman.failures.install.desc" = "Unfortunately, the automatic installation failed. You can manually try to run this command: `%@` and find out what goes wrong. Remember to restart PHP Monitor (or press the refresh button) when this is done.";
|
||||
|
||||
"phpman.uninstall_prevented.title" = "You cannot uninstall the currently active version of PHP via PHP Monitor.";
|
||||
|
Reference in New Issue
Block a user