mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 03:50:08 +02:00
✨ Load certain info from ini files
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
|
||||
1. Merge into `main`
|
||||
2. Create tag
|
||||
3. Add changes to changelog
|
||||
3. Add changes to changelog + update security document
|
||||
4. Archive
|
||||
5. Notarize and prepare for own distribution
|
||||
6. After notarization, export .app
|
||||
|
@ -9,8 +9,9 @@ import Foundation
|
||||
|
||||
class PhpInstall {
|
||||
|
||||
var version: Version!
|
||||
var extensions: [PhpExtension]!
|
||||
var version: Version
|
||||
var configuration: Configuration
|
||||
var extensions: [PhpExtension]
|
||||
|
||||
// MARK: - Computed
|
||||
|
||||
@ -21,29 +22,55 @@ class PhpInstall {
|
||||
// MARK: - Initializer
|
||||
|
||||
init() {
|
||||
let version = Command.execute(path: Paths.php, arguments: ["-r", "print phpversion();"])
|
||||
// Show information about the current version
|
||||
self.version = type(of: self).getVersion()
|
||||
|
||||
self.version = Version()
|
||||
|
||||
if (version == "" || version.contains("Warning")) {
|
||||
self.version.short = "💩 BROKEN"
|
||||
self.version.long = "";
|
||||
self.version.error = true
|
||||
return;
|
||||
// If an error occurred, exit early
|
||||
if (self.version.error) {
|
||||
self.configuration = Configuration()
|
||||
self.extensions = []
|
||||
return
|
||||
}
|
||||
|
||||
// That's the long version
|
||||
self.version.long = version
|
||||
|
||||
// Next up, let's strip away the minor version number
|
||||
let segments = self.version.long.components(separatedBy: ".")
|
||||
|
||||
// Get the first two elements
|
||||
self.version.short = segments[0...1].joined(separator: ".")
|
||||
|
||||
// Load extension information
|
||||
let path = URL(fileURLWithPath: "\(Paths.etcPath)/php/\(self.version.short)/php.ini")
|
||||
self.extensions = PhpExtension.load(from: path)
|
||||
|
||||
// Get configuration values
|
||||
self.configuration = Configuration(
|
||||
memory_limit: type(of: self).getIniValue(key: "memory_limit"),
|
||||
upload_max_filesize: type(of: self).getIniValue(key: "upload_max_filesize"),
|
||||
post_max_size: type(of: self).getIniValue(key: "post_max_size")
|
||||
)
|
||||
|
||||
print(self.configuration)
|
||||
}
|
||||
|
||||
private static func getVersion() -> Version {
|
||||
var versionStruct = Version()
|
||||
let version = Command.execute(path: Paths.php, arguments: ["-r", "print phpversion();"])
|
||||
|
||||
if (version == "" || version.contains("Warning")) {
|
||||
versionStruct.short = "💩 BROKEN"
|
||||
versionStruct.long = "";
|
||||
versionStruct.error = true
|
||||
return versionStruct;
|
||||
}
|
||||
|
||||
// That's the long version
|
||||
versionStruct.long = version
|
||||
|
||||
// Next up, let's strip away the minor version number
|
||||
let segments = versionStruct.long.components(separatedBy: ".")
|
||||
|
||||
// Get the first two elements
|
||||
versionStruct.short = segments[0...1].joined(separator: ".")
|
||||
|
||||
return versionStruct
|
||||
}
|
||||
|
||||
private static func getIniValue(key: String) -> String {
|
||||
return Command.execute(path: Paths.php, arguments: ["-r", "echo ini_get('\(key)');"])
|
||||
}
|
||||
|
||||
// MARK: - Structs
|
||||
@ -53,4 +80,10 @@ class PhpInstall {
|
||||
var long = "???"
|
||||
var error = false
|
||||
}
|
||||
|
||||
struct Configuration {
|
||||
var memory_limit = "???"
|
||||
var upload_max_filesize = "???"
|
||||
var post_max_size = "???"
|
||||
}
|
||||
}
|
||||
|
@ -8,8 +8,7 @@
|
||||
import Cocoa
|
||||
|
||||
class StatusMenu : NSMenu {
|
||||
public func addPhpVersionMenuItems()
|
||||
{
|
||||
public func addPhpVersionMenuItems() {
|
||||
if (App.shared.currentInstall == nil) {
|
||||
return
|
||||
}
|
||||
@ -27,8 +26,7 @@ class StatusMenu : NSMenu {
|
||||
}
|
||||
}
|
||||
|
||||
public func addPhpActionMenuItems()
|
||||
{
|
||||
public func addPhpActionMenuItems() {
|
||||
if App.busy {
|
||||
self.addItem(NSMenuItem(title: "mi_busy".localized, action: nil, keyEquivalent: ""))
|
||||
return
|
||||
@ -37,6 +35,17 @@ class StatusMenu : NSMenu {
|
||||
return
|
||||
}
|
||||
|
||||
// Switch to PHP X.X
|
||||
self.addSwitchToPhpMenuItems()
|
||||
|
||||
// Separator
|
||||
self.addItem(NSMenuItem.separator())
|
||||
|
||||
// Services
|
||||
self.addServicesMenuItems()
|
||||
}
|
||||
|
||||
private func addSwitchToPhpMenuItems() {
|
||||
var shortcutKey = 1
|
||||
for index in (0..<App.shared.availablePhpVersions.count).reversed() {
|
||||
let version = App.shared.availablePhpVersions[index]
|
||||
@ -50,40 +59,59 @@ class StatusMenu : NSMenu {
|
||||
shortcutKey = shortcutKey + 1
|
||||
self.addItem(menuItem)
|
||||
}
|
||||
|
||||
self.addItem(NSMenuItem.separator())
|
||||
self.addItem(NSMenuItem(title: "mi_active_services".localized, action: nil, keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "d"))
|
||||
self.addItem(NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm), keyEquivalent: "p"))
|
||||
self.addItem(NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx), keyEquivalent: "n"))
|
||||
self.addItem(NSMenuItem(title: "mi_restart_all_services".localized, action: #selector(MainMenu.restartAllServices), keyEquivalent: "s"))
|
||||
|
||||
self.addItem(NSMenuItem.separator())
|
||||
self.addItem(NSMenuItem(title: "mi_diagnostics".localized, action: nil, keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "mi_force_load_latest".localized, action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f"))
|
||||
}
|
||||
|
||||
public func addPhpConfigurationMenuItems()
|
||||
{
|
||||
private func addServicesMenuItems() {
|
||||
self.addItem(NSMenuItem(title: "mi_active_services".localized, action: nil, keyEquivalent: ""))
|
||||
|
||||
let services = NSMenuItem(title: "mi_restart_specific".localized, action: nil, keyEquivalent: "")
|
||||
let servicesMenu = NSMenu()
|
||||
servicesMenu.addItem(NSMenuItem(title: "mi_restart_dnsmasq".localized, action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "d"))
|
||||
servicesMenu.addItem(NSMenuItem(title: "mi_restart_php_fpm".localized, action: #selector(MainMenu.restartPhpFpm), keyEquivalent: "p"))
|
||||
servicesMenu.addItem(NSMenuItem(title: "mi_restart_nginx".localized, action: #selector(MainMenu.restartNginx), keyEquivalent: "n"))
|
||||
for item in servicesMenu.items {
|
||||
item.target = MainMenu.shared
|
||||
}
|
||||
|
||||
self.setSubmenu(servicesMenu, for: services)
|
||||
|
||||
self.addItem(NSMenuItem(title: "mi_force_load_latest".localized, action: #selector(MainMenu.forceRestartLatestPhp), keyEquivalent: "f"))
|
||||
self.addItem(services)
|
||||
self.addItem(NSMenuItem(title: "mi_restart_all_services".localized, action: #selector(MainMenu.restartAllServices), keyEquivalent: "s"))
|
||||
}
|
||||
|
||||
public func addPhpConfigurationMenuItems() {
|
||||
if App.shared.currentInstall == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Configuration
|
||||
|
||||
self.addItem(NSMenuItem(title: "mi_configuration".localized, action: nil, keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "mi_valet_config".localized, action: #selector(MainMenu.openValetConfigFolder), keyEquivalent: "v"))
|
||||
self.addItem(NSMenuItem(title: "mi_php_config".localized, action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: "c"))
|
||||
self.addItem(NSMenuItem(title: "mi_phpinfo".localized, action: #selector(MainMenu.openPhpInfo), keyEquivalent: "i"))
|
||||
|
||||
// Memory Limits
|
||||
|
||||
self.addItem(NSMenuItem.separator())
|
||||
self.addItem(NSMenuItem(title: "mi_limits".localized, action: nil, keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "memory_limit: \(App.phpInstall!.configuration.memory_limit)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "post_max_size: \(App.phpInstall!.configuration.post_max_size)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
|
||||
self.addItem(NSMenuItem(title: "upload_max_filesize: \(App.phpInstall!.configuration.upload_max_filesize)", action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: ""))
|
||||
|
||||
// Extensions
|
||||
|
||||
self.addItem(NSMenuItem.separator())
|
||||
self.addItem(NSMenuItem(title: "mi_detected_extensions".localized, action: nil, keyEquivalent: ""))
|
||||
|
||||
for phpExtension in App.phpInstall!.extensions {
|
||||
self.addExtensionItem(phpExtension)
|
||||
}
|
||||
|
||||
if (App.phpInstall!.extensions.count == 0) {
|
||||
self.addItem(NSMenuItem(title: "mi_no_extensions_detected".localized, action: nil, keyEquivalent: ""))
|
||||
}
|
||||
|
||||
for phpExtension in App.phpInstall!.extensions {
|
||||
self.addExtensionItem(phpExtension)
|
||||
}
|
||||
}
|
||||
|
||||
private func addExtensionItem(_ phpExtension: PhpExtension) {
|
||||
|
@ -22,10 +22,12 @@
|
||||
"mi_restart_php_fpm" = "Restart service: php";
|
||||
"mi_restart_nginx" = "Restart service: nginx";
|
||||
"mi_restart_dnsmasq" = "Restart service: dnsmasq";
|
||||
"mi_restart_specific" = "Restart specific service";
|
||||
"mi_restart_all_services" = "Restart all services";
|
||||
"mi_force_load_latest" = "Force load latest PHP version";
|
||||
|
||||
"mi_configuration" = "Configuration";
|
||||
"mi_limits" = "Memory & Upload Limits";
|
||||
"mi_valet_config" = "Locate Valet folder (.config/valet)";
|
||||
"mi_php_config" = "Locate PHP configuration file (php.ini)";
|
||||
"mi_phpinfo" = "Show current configuration (phpinfo)";
|
||||
|
Reference in New Issue
Block a user