From f2d01748bebe281d9d502af556edd10dc7cb0615 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Sat, 16 May 2020 23:06:52 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Change=20default=20shell?= =?UTF-8?q?=20for=20commands,=20cleanup=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The shell that is now invoked is /bin/sh as opposed to /bin/bash, which has proven to be faster in various cases. --- phpmon/Extensions/DateExtension.swift | 3 +-- phpmon/Extensions/StringExtension.swift | 7 ++++++- phpmon/Singletons/Command.swift | 23 ----------------------- phpmon/Singletons/Shell.swift | 12 +++--------- 4 files changed, 10 insertions(+), 35 deletions(-) diff --git a/phpmon/Extensions/DateExtension.swift b/phpmon/Extensions/DateExtension.swift index 86a330b..10279b5 100644 --- a/phpmon/Extensions/DateExtension.swift +++ b/phpmon/Extensions/DateExtension.swift @@ -10,8 +10,7 @@ import Cocoa extension Date { - func toString() -> String - { + func toString() -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" return dateFormatter.string(from: self) diff --git a/phpmon/Extensions/StringExtension.swift b/phpmon/Extensions/StringExtension.swift index d2f46db..4217b4c 100644 --- a/phpmon/Extensions/StringExtension.swift +++ b/phpmon/Extensions/StringExtension.swift @@ -10,13 +10,18 @@ import Foundation extension String { func countInstances(of stringToFind: String) -> Int { - assert(!stringToFind.isEmpty) + if (stringToFind.isEmpty) { + return 0 + } + var count = 0 var searchRange: Range? + while let foundRange = range(of: stringToFind, options: [], range: searchRange) { count += 1 searchRange = Range(uncheckedBounds: (lower: foundRange.upperBound, upper: endIndex)) } + return count } } diff --git a/phpmon/Singletons/Command.swift b/phpmon/Singletons/Command.swift index 7c1e4d6..2931a6b 100644 --- a/phpmon/Singletons/Command.swift +++ b/phpmon/Singletons/Command.swift @@ -24,27 +24,4 @@ class Command { return output; } - public static func experiment() { - /* - print("Running '/usr/local/bin/php -v' directly...") - print("========================================") - var start = DispatchTime.now() - print(Command.execute(path: "/usr/local/bin/php", arguments: ["-v"])) - var end = DispatchTime.now() - var nanoTime = end.uptimeNanoseconds - start.uptimeNanoseconds - var timeInterval = Double(nanoTime) / 1_000_000_000 - print("Time to run command directly: \(timeInterval) seconds") - - print("") - print("Running 'bash -> php -v'...") - print("========================================") - start = DispatchTime.now() - print(Shell.user.pipe("php -v")) - end = DispatchTime.now() - nanoTime = end.uptimeNanoseconds - start.uptimeNanoseconds - timeInterval = Double(nanoTime) / 1_000_000_000 - print("Time to run command via bash: \(timeInterval) seconds") - */ - } - } diff --git a/phpmon/Singletons/Shell.swift b/phpmon/Singletons/Shell.swift index 5db6269..61729cd 100644 --- a/phpmon/Singletons/Shell.swift +++ b/phpmon/Singletons/Shell.swift @@ -40,9 +40,9 @@ class Shell { } /// Runs a shell command and returns the output. - public func pipe(_ command: String) -> String { + public func pipe(_ command: String, shell: String = "/bin/sh") -> String { let task = Process() - task.launchPath = "/bin/bash" + task.launchPath = shell task.arguments = ["--login", "-c", command] let pipe = Pipe() @@ -51,13 +51,7 @@ class Shell { let data = pipe.fileHandleForReading.readDataToEndOfFile() - let output: String = NSString( - data: data, - encoding: String.Encoding.utf8.rawValue - )!.replacingOccurrences( - of: "\u{1B}(B\u{1B}[m", - with: "" - ) as String + let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String let historyItem = ShellHistoryItem(command: command, output: output)