mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-09 12:43:01 +02:00
🔥 Additional cleanup
This commit is contained in:
@@ -12,11 +12,12 @@
|
|||||||
C41C1B3B22B0098000E7CF16 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C41C1B3A22B0098000E7CF16 /* Assets.xcassets */; };
|
C41C1B3B22B0098000E7CF16 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C41C1B3A22B0098000E7CF16 /* Assets.xcassets */; };
|
||||||
C41C1B3E22B0098000E7CF16 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C41C1B3C22B0098000E7CF16 /* Main.storyboard */; };
|
C41C1B3E22B0098000E7CF16 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C41C1B3C22B0098000E7CF16 /* Main.storyboard */; };
|
||||||
C41C1B4722B009A400E7CF16 /* Shell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4622B009A400E7CF16 /* Shell.swift */; };
|
C41C1B4722B009A400E7CF16 /* Shell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4622B009A400E7CF16 /* Shell.swift */; };
|
||||||
C41C1B4922B00A9800E7CF16 /* ImageGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4822B00A9800E7CF16 /* ImageGenerator.swift */; };
|
C41C1B4922B00A9800E7CF16 /* MenuBarImageGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */; };
|
||||||
C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */; };
|
C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */; };
|
||||||
C41C1B4D22B0215A00E7CF16 /* Services.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4C22B0215A00E7CF16 /* Services.swift */; };
|
C41C1B4D22B0215A00E7CF16 /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C41C1B4C22B0215A00E7CF16 /* Actions.swift */; };
|
||||||
C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; };
|
C476FF9822B0DD830098105B /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = C476FF9722B0DD830098105B /* Alert.swift */; };
|
||||||
C4D8016622B1584700C6DA1B /* BootChecks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D8016522B1584700C6DA1B /* BootChecks.swift */; };
|
C4811D2422D70A4700B5F6B3 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4811D2322D70A4700B5F6B3 /* App.swift */; };
|
||||||
|
C4D8016622B1584700C6DA1B /* Startup.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D8016522B1584700C6DA1B /* Startup.swift */; };
|
||||||
C4EE188422D3386B00E126E5 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EE188322D3386B00E126E5 /* Constants.swift */; };
|
C4EE188422D3386B00E126E5 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EE188322D3386B00E126E5 /* Constants.swift */; };
|
||||||
C4F8C0A422D4F12C002EFE61 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */; };
|
C4F8C0A422D4F12C002EFE61 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */; };
|
||||||
C4F8C0A622D4FA41002EFE61 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = C4F8C0A522D4FA41002EFE61 /* README.md */; };
|
C4F8C0A622D4FA41002EFE61 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = C4F8C0A522D4FA41002EFE61 /* README.md */; };
|
||||||
@@ -31,11 +32,12 @@
|
|||||||
C41C1B3F22B0098000E7CF16 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
C41C1B3F22B0098000E7CF16 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
C41C1B4022B0098000E7CF16 /* phpmon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = phpmon.entitlements; sourceTree = "<group>"; };
|
C41C1B4022B0098000E7CF16 /* phpmon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = phpmon.entitlements; sourceTree = "<group>"; };
|
||||||
C41C1B4622B009A400E7CF16 /* Shell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shell.swift; sourceTree = "<group>"; };
|
C41C1B4622B009A400E7CF16 /* Shell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shell.swift; sourceTree = "<group>"; };
|
||||||
C41C1B4822B00A9800E7CF16 /* ImageGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageGenerator.swift; sourceTree = "<group>"; };
|
C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuBarImageGenerator.swift; sourceTree = "<group>"; };
|
||||||
C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpVersion.swift; sourceTree = "<group>"; };
|
C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhpVersion.swift; sourceTree = "<group>"; };
|
||||||
C41C1B4C22B0215A00E7CF16 /* Services.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Services.swift; sourceTree = "<group>"; };
|
C41C1B4C22B0215A00E7CF16 /* Actions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Actions.swift; sourceTree = "<group>"; };
|
||||||
C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
|
C476FF9722B0DD830098105B /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
|
||||||
C4D8016522B1584700C6DA1B /* BootChecks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BootChecks.swift; sourceTree = "<group>"; };
|
C4811D2322D70A4700B5F6B3 /* App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = "<group>"; };
|
||||||
|
C4D8016522B1584700C6DA1B /* Startup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Startup.swift; sourceTree = "<group>"; };
|
||||||
C4EE188322D3386B00E126E5 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
|
C4EE188322D3386B00E126E5 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
|
||||||
C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
|
C4F8C0A322D4F12C002EFE61 /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
|
||||||
C4F8C0A522D4FA41002EFE61 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
C4F8C0A522D4FA41002EFE61 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||||
@@ -72,14 +74,12 @@
|
|||||||
C41C1B3522B0097F00E7CF16 /* phpmon */ = {
|
C41C1B3522B0097F00E7CF16 /* phpmon */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
C41C1B3622B0097F00E7CF16 /* AppDelegate.swift */,
|
||||||
C4EE188322D3386B00E126E5 /* Constants.swift */,
|
C4EE188322D3386B00E126E5 /* Constants.swift */,
|
||||||
|
C4811D2622D70CEF00B5F6B3 /* Singletons */,
|
||||||
C41E181722CB61EB0072CF09 /* Classes */,
|
C41E181722CB61EB0072CF09 /* Classes */,
|
||||||
C41E181622CB61890072CF09 /* Startup */,
|
|
||||||
C41E181522CB614C0072CF09 /* Terminal */,
|
|
||||||
C41C1B4E22B024F100E7CF16 /* Helpers */,
|
|
||||||
C41E181822CB62200072CF09 /* View Controllers */,
|
C41E181822CB62200072CF09 /* View Controllers */,
|
||||||
C4F8C0A222D4F100002EFE61 /* Extensions */,
|
C4F8C0A222D4F100002EFE61 /* Extensions */,
|
||||||
C41C1B3622B0097F00E7CF16 /* AppDelegate.swift */,
|
|
||||||
C41C1B3F22B0098000E7CF16 /* Info.plist */,
|
C41C1B3F22B0098000E7CF16 /* Info.plist */,
|
||||||
C41C1B4022B0098000E7CF16 /* phpmon.entitlements */,
|
C41C1B4022B0098000E7CF16 /* phpmon.entitlements */,
|
||||||
C41C1B3A22B0098000E7CF16 /* Assets.xcassets */,
|
C41C1B3A22B0098000E7CF16 /* Assets.xcassets */,
|
||||||
@@ -87,36 +87,11 @@
|
|||||||
path = phpmon;
|
path = phpmon;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
C41C1B4E22B024F100E7CF16 /* Helpers */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
C41C1B4822B00A9800E7CF16 /* ImageGenerator.swift */,
|
|
||||||
C476FF9722B0DD830098105B /* Alert.swift */,
|
|
||||||
);
|
|
||||||
path = Helpers;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
C41E181522CB614C0072CF09 /* Terminal */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
C41C1B4622B009A400E7CF16 /* Shell.swift */,
|
|
||||||
C41C1B4C22B0215A00E7CF16 /* Services.swift */,
|
|
||||||
);
|
|
||||||
path = Terminal;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
C41E181622CB61890072CF09 /* Startup */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
C4D8016522B1584700C6DA1B /* BootChecks.swift */,
|
|
||||||
);
|
|
||||||
path = Startup;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
C41E181722CB61EB0072CF09 /* Classes */ = {
|
C41E181722CB61EB0072CF09 /* Classes */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */,
|
C4811D2722D70D8E00B5F6B3 /* Commands */,
|
||||||
|
C4811D2822D70D9C00B5F6B3 /* Helpers */,
|
||||||
);
|
);
|
||||||
path = Classes;
|
path = Classes;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -130,6 +105,34 @@
|
|||||||
path = "View Controllers";
|
path = "View Controllers";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
C4811D2622D70CEF00B5F6B3 /* Singletons */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C41C1B4622B009A400E7CF16 /* Shell.swift */,
|
||||||
|
C4811D2322D70A4700B5F6B3 /* App.swift */,
|
||||||
|
);
|
||||||
|
path = Singletons;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
C4811D2722D70D8E00B5F6B3 /* Commands */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C41C1B4C22B0215A00E7CF16 /* Actions.swift */,
|
||||||
|
C4D8016522B1584700C6DA1B /* Startup.swift */,
|
||||||
|
);
|
||||||
|
path = Commands;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
C4811D2822D70D9C00B5F6B3 /* Helpers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
C476FF9722B0DD830098105B /* Alert.swift */,
|
||||||
|
C41C1B4A22B019FF00E7CF16 /* PhpVersion.swift */,
|
||||||
|
C41C1B4822B00A9800E7CF16 /* MenuBarImageGenerator.swift */,
|
||||||
|
);
|
||||||
|
path = Helpers;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
C4F8C0A222D4F100002EFE61 /* Extensions */ = {
|
C4F8C0A222D4F100002EFE61 /* Extensions */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -209,11 +212,12 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
C4D8016622B1584700C6DA1B /* BootChecks.swift in Sources */,
|
C4D8016622B1584700C6DA1B /* Startup.swift in Sources */,
|
||||||
C4F8C0A422D4F12C002EFE61 /* DateExtension.swift in Sources */,
|
C4F8C0A422D4F12C002EFE61 /* DateExtension.swift in Sources */,
|
||||||
C41C1B4722B009A400E7CF16 /* Shell.swift in Sources */,
|
C41C1B4722B009A400E7CF16 /* Shell.swift in Sources */,
|
||||||
C41C1B4D22B0215A00E7CF16 /* Services.swift in Sources */,
|
C41C1B4D22B0215A00E7CF16 /* Actions.swift in Sources */,
|
||||||
C41C1B4922B00A9800E7CF16 /* ImageGenerator.swift in Sources */,
|
C4811D2422D70A4700B5F6B3 /* App.swift in Sources */,
|
||||||
|
C41C1B4922B00A9800E7CF16 /* MenuBarImageGenerator.swift in Sources */,
|
||||||
C41C1B3922B0097F00E7CF16 /* LogViewController.swift in Sources */,
|
C41C1B3922B0097F00E7CF16 /* LogViewController.swift in Sources */,
|
||||||
C41C1B3722B0097F00E7CF16 /* AppDelegate.swift in Sources */,
|
C41C1B3722B0097F00E7CF16 /* AppDelegate.swift in Sources */,
|
||||||
C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */,
|
C41C1B4B22B019FF00E7CF16 /* PhpVersion.swift in Sources */,
|
||||||
|
@@ -14,16 +14,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
// MARK: - Variables
|
// MARK: - Variables
|
||||||
|
|
||||||
let sharedShell : Shell
|
let sharedShell : Shell
|
||||||
|
let state : App
|
||||||
let statusItem = NSStatusBar.system.statusItem(withLength: 32)
|
let statusItem = NSStatusBar.system.statusItem(withLength: 32)
|
||||||
var timer: Timer?
|
|
||||||
var version: PhpVersion? = nil
|
// MARK: - Initializer
|
||||||
var availablePhpVersions : [String] = []
|
|
||||||
var busy: Bool = false
|
|
||||||
var log: String = ""
|
|
||||||
var windowController: NSWindowController? = nil
|
|
||||||
|
|
||||||
override init() {
|
override init() {
|
||||||
self.sharedShell = Shell.shared
|
self.sharedShell = Shell.shared
|
||||||
|
self.state = App.shared
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,12 +32,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
||||||
// Perform environment boot checks
|
// Perform environment boot checks
|
||||||
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||||
BootChecks.perform()
|
Startup.checkEnvironment()
|
||||||
self.availablePhpVersions = Services.detectPhpVersions()
|
App.shared.availablePhpVersions = Actions.detectPhpVersions()
|
||||||
self.updatePhpVersionInStatusBar()
|
self.updatePhpVersionInStatusBar()
|
||||||
// Schedule a request to fetch the PHP version every 60 seconds
|
// Schedule a request to fetch the PHP version every 60 seconds
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self.timer = Timer.scheduledTimer(
|
App.shared.timer = Timer.scheduledTimer(
|
||||||
timeInterval: 60,
|
timeInterval: 60,
|
||||||
target: self,
|
target: self,
|
||||||
selector: #selector(self.updatePhpVersionInStatusBar),
|
selector: #selector(self.updatePhpVersionInStatusBar),
|
||||||
@@ -57,7 +55,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
// MARK: - UI related
|
// MARK: - UI related
|
||||||
|
|
||||||
func setStatusBarImage(version: String) {
|
func setStatusBarImage(version: String) {
|
||||||
self.setStatusBar(image: ImageGenerator.generateImageForStatusBar(width: 32.0, text: version))
|
self.setStatusBar(image: MenuBarImageGenerator.textToImage(width: 32.0, text: version))
|
||||||
}
|
}
|
||||||
|
|
||||||
func setStatusBar(image: NSImage) {
|
func setStatusBar(image: NSImage) {
|
||||||
@@ -71,29 +69,29 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||||
let menu = NSMenu()
|
let menu = NSMenu()
|
||||||
var string = "We are not sure what version of PHP you are running."
|
var string = "We are not sure what version of PHP you are running."
|
||||||
if (self.version != nil) {
|
if (App.shared.currentVersion != nil) {
|
||||||
string = "You are running PHP \(self.version!.long)"
|
string = "You are running PHP \(App.shared.currentVersion!.long)"
|
||||||
}
|
}
|
||||||
menu.addItem(NSMenuItem(title: string, action: nil, keyEquivalent: ""))
|
menu.addItem(NSMenuItem(title: string, action: nil, keyEquivalent: ""))
|
||||||
if (self.version != nil) {
|
if (App.shared.currentVersion != nil) {
|
||||||
// Actions
|
// Actions
|
||||||
menu.addItem(NSMenuItem.separator())
|
menu.addItem(NSMenuItem.separator())
|
||||||
menu.addItem(NSMenuItem(title: "PHP configuration file (php.ini)", action: #selector(self.openActiveConfigFolder), keyEquivalent: ""))
|
menu.addItem(NSMenuItem(title: "PHP configuration file (php.ini)", action: #selector(self.openActiveConfigFolder), keyEquivalent: ""))
|
||||||
}
|
}
|
||||||
menu.addItem(NSMenuItem.separator())
|
menu.addItem(NSMenuItem.separator())
|
||||||
if (self.availablePhpVersions.count > 0 && !self.busy) {
|
if (App.shared.availablePhpVersions.count > 0 && !App.shared.busy) {
|
||||||
var shortcutKey = 1
|
var shortcutKey = 1
|
||||||
for index in (0..<self.availablePhpVersions.count).reversed() {
|
for index in (0..<App.shared.availablePhpVersions.count).reversed() {
|
||||||
let version = self.availablePhpVersions[index]
|
let version = App.shared.availablePhpVersions[index]
|
||||||
let action = #selector(self.switchToPhpVersion(sender:))
|
let action = #selector(self.switchToPhpVersion(sender:))
|
||||||
let menuItem = NSMenuItem(title: "Switch to PHP \(version)", action: (version == self.version?.short) ? nil : action, keyEquivalent: "\(shortcutKey)")
|
let menuItem = NSMenuItem(title: "Switch to PHP \(version)", action: (version == App.shared.currentVersion?.short) ? nil : action, keyEquivalent: "\(shortcutKey)")
|
||||||
menuItem.tag = index
|
menuItem.tag = index
|
||||||
shortcutKey = shortcutKey + 1
|
shortcutKey = shortcutKey + 1
|
||||||
menu.addItem(menuItem)
|
menu.addItem(menuItem)
|
||||||
}
|
}
|
||||||
menu.addItem(NSMenuItem.separator())
|
menu.addItem(NSMenuItem.separator())
|
||||||
}
|
}
|
||||||
if (self.busy) {
|
if (App.shared.busy) {
|
||||||
menu.addItem(NSMenuItem(title: "Switching PHP versions...", action: nil, keyEquivalent: ""))
|
menu.addItem(NSMenuItem(title: "Switching PHP versions...", action: nil, keyEquivalent: ""))
|
||||||
menu.addItem(NSMenuItem.separator())
|
menu.addItem(NSMenuItem.separator())
|
||||||
}
|
}
|
||||||
@@ -109,27 +107,27 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
// MARK: - Callable via Obj-C (#selector)
|
// MARK: - Callable via Obj-C (#selector)
|
||||||
|
|
||||||
@objc func openOutput() {
|
@objc func openOutput() {
|
||||||
if (self.windowController == nil) {
|
if (App.shared.windowController == nil) {
|
||||||
let vc = NSStoryboard(name: "Main", bundle: nil).instantiateController(withIdentifier: "logWindow") as! LogViewController
|
let vc = NSStoryboard(name: "Main", bundle: nil).instantiateController(withIdentifier: "logWindow") as! LogViewController
|
||||||
Shell.shared.delegate = vc
|
Shell.shared.delegate = vc
|
||||||
let window = NSWindow(contentViewController: vc)
|
let window = NSWindow(contentViewController: vc)
|
||||||
window.title = "Terminal Output"
|
window.title = "Terminal Output"
|
||||||
window.delegate = self
|
window.delegate = self
|
||||||
self.windowController = NSWindowController(window: window)
|
App.shared.windowController = NSWindowController(window: window)
|
||||||
}
|
}
|
||||||
self.windowController!.showWindow(self)
|
App.shared.windowController!.showWindow(self)
|
||||||
NSApp.activate(ignoringOtherApps: true)
|
NSApp.activate(ignoringOtherApps: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func updatePhpVersionInStatusBar() {
|
@objc func updatePhpVersionInStatusBar() {
|
||||||
self.version = PhpVersion()
|
App.shared.currentVersion = PhpVersion()
|
||||||
if (self.busy) {
|
if (App.shared.busy) {
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self.setStatusBarImage(version: self.version!.short)
|
self.setStatusBarImage(version: App.shared.currentVersion!.short)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.updateMenu()
|
self.updateMenu()
|
||||||
@@ -141,27 +139,23 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc public func openActiveConfigFolder() {
|
@objc public func openActiveConfigFolder() {
|
||||||
Services.openPhpConfigFolder(version: self.version!.short)
|
Actions.openPhpConfigFolder(version: App.shared.currentVersion!.short)
|
||||||
}
|
|
||||||
|
|
||||||
@objc public func restartPhp() {
|
|
||||||
Services.restartPhp(version: self.version!.short)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc public func switchToPhpVersion(sender: AnyObject) {
|
@objc public func switchToPhpVersion(sender: AnyObject) {
|
||||||
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
self.setStatusBar(image: NSImage(named: NSImage.Name("StatusBarIcon"))!)
|
||||||
let index = sender.tag!
|
let index = sender.tag!
|
||||||
let version = self.availablePhpVersions[index]
|
let version = App.shared.availablePhpVersions[index]
|
||||||
self.busy = true
|
App.shared.busy = true
|
||||||
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||||
// Update the PHP version in the status bar
|
// Update the PHP version in the status bar
|
||||||
self.updatePhpVersionInStatusBar()
|
self.updatePhpVersionInStatusBar()
|
||||||
// Update the menu
|
// Update the menu
|
||||||
self.updateMenu()
|
self.updateMenu()
|
||||||
// Switch the PHP version
|
// Switch the PHP version
|
||||||
Services.switchToPhpVersion(version: version, availableVersions: self.availablePhpVersions)
|
Actions.switchToPhpVersion(version: version, availableVersions: App.shared.availablePhpVersions)
|
||||||
// Mark as no longer busy
|
// Mark as no longer busy
|
||||||
self.busy = false
|
App.shared.busy = false
|
||||||
// Perform UI updates on main thread
|
// Perform UI updates on main thread
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
self.updatePhpVersionInStatusBar()
|
self.updatePhpVersionInStatusBar()
|
||||||
@@ -171,7 +165,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func windowWillClose(_ notification: Notification) {
|
func windowWillClose(_ notification: Notification) {
|
||||||
self.windowController = nil
|
App.shared.windowController = nil
|
||||||
Shell.shared.delegate = nil
|
Shell.shared.delegate = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,16 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import AppKit
|
import AppKit
|
||||||
|
|
||||||
class Services {
|
class Actions {
|
||||||
public static func mysqlIsRunning() -> Bool {
|
|
||||||
let running = Shell.shared.pipe("launchctl list | grep homebrew.mxcl.mysql")
|
|
||||||
return (running != "")
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func nginxIsRunning() -> Bool {
|
|
||||||
let running = Shell.shared.pipe("launchctl list | grep homebrew.mxcl.nginx")
|
|
||||||
return (running != "")
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func detectPhpVersions() -> [String] {
|
public static func detectPhpVersions() -> [String] {
|
||||||
let files = Shell.shared.pipe("ls /usr/local/opt | grep php@")
|
let files = Shell.shared.pipe("ls /usr/local/opt | grep php@")
|
||||||
@@ -49,10 +40,6 @@ class Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func restartPhp(version: String) {
|
|
||||||
Shell.shared.run("brew services restart php@\(version)")
|
|
||||||
}
|
|
||||||
|
|
||||||
public static func openPhpConfigFolder(version: String) {
|
public static func openPhpConfigFolder(version: String) {
|
||||||
let files = [NSURL(fileURLWithPath: "/usr/local/etc/php/\(version)/php.ini")];
|
let files = [NSURL(fileURLWithPath: "/usr/local/etc/php/\(version)/php.ini")];
|
||||||
NSWorkspace.shared.activateFileViewerSelecting(files as [URL]);
|
NSWorkspace.shared.activateFileViewerSelecting(files as [URL]);
|
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
class BootChecks {
|
class Startup {
|
||||||
|
|
||||||
public static func perform()
|
public static func checkEnvironment()
|
||||||
{
|
{
|
||||||
self.presentAlertOnMainThreadIf(
|
self.presentAlertOnMainThreadIf(
|
||||||
!Shell.shared.pipe("which php").contains("/usr/local/bin/php"),
|
!Shell.shared.pipe("which php").contains("/usr/local/bin/php"),
|
@@ -8,9 +8,12 @@
|
|||||||
|
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
class ImageGenerator {
|
class MenuBarImageGenerator {
|
||||||
|
|
||||||
public static func generateImageForStatusBar(width: CGFloat = 30.0, height: CGFloat = 20.0, text: String) -> NSImage {
|
/**
|
||||||
|
Takes a string and converts it to an image that can be displayed in the menu bar.
|
||||||
|
*/
|
||||||
|
public static func textToImage(width: CGFloat = 30.0, height: CGFloat = 20.0, text: String) -> NSImage {
|
||||||
let image = NSImage(size: NSMakeSize(width, height))
|
let image = NSImage(size: NSMakeSize(width, height))
|
||||||
let font = NSFont.systemFont(ofSize: 14)
|
let font = NSFont.systemFont(ofSize: 14)
|
||||||
|
|
@@ -22,5 +22,5 @@ class Constants {
|
|||||||
This is usually the latest PHP version.
|
This is usually the latest PHP version.
|
||||||
*/
|
*/
|
||||||
static let LatestPhpVersion = "7.3"
|
static let LatestPhpVersion = "7.3"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
40
phpmon/Singletons/App.swift
Normal file
40
phpmon/Singletons/App.swift
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
//
|
||||||
|
// StateManager.swift
|
||||||
|
// phpmon
|
||||||
|
//
|
||||||
|
// Created by Nico Verbruggen on 11/07/2019.
|
||||||
|
// Copyright © 2019 Nico Verbruggen. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Cocoa
|
||||||
|
|
||||||
|
class App {
|
||||||
|
|
||||||
|
static let shared = App()
|
||||||
|
|
||||||
|
/**
|
||||||
|
Whether the application is busy switching versions.
|
||||||
|
*/
|
||||||
|
var busy: Bool = false
|
||||||
|
|
||||||
|
/**
|
||||||
|
The currently active version of PHP.
|
||||||
|
*/
|
||||||
|
var currentVersion: PhpVersion? = nil
|
||||||
|
|
||||||
|
/**
|
||||||
|
All available versions of PHP.
|
||||||
|
*/
|
||||||
|
var availablePhpVersions : [String] = []
|
||||||
|
|
||||||
|
/**
|
||||||
|
The timer that will periodically fetch the PHP version that is currently active.
|
||||||
|
*/
|
||||||
|
var timer: Timer?
|
||||||
|
|
||||||
|
/**
|
||||||
|
The window controller that will show the log.
|
||||||
|
*/
|
||||||
|
var windowController: NSWindowController? = nil
|
||||||
|
|
||||||
|
}
|
@@ -62,7 +62,6 @@ class Shell {
|
|||||||
history.append(historyItem)
|
history.append(historyItem)
|
||||||
// Keep the last 100 items
|
// Keep the last 100 items
|
||||||
history = history.suffix(100)
|
history = history.suffix(100)
|
||||||
print(history.count)
|
|
||||||
delegate?.didCompleteCommand(historyItem: historyItem)
|
delegate?.didCompleteCommand(historyItem: historyItem)
|
||||||
|
|
||||||
return output
|
return output
|
Reference in New Issue
Block a user