                                        task: task)
     }
 
-    private func makeTask(for command: String, with arguments: [String], environmentVariables: [String: String]) -> Process {
+    private func makeTask(for command: String,
+                          with arguments: [String],
+                          environmentVariables: [String: String]) -> Process {
         let script = [command,
                       arguments.joined(separator: " ")].filter { !$0.isEmpty }.joined(separator: " ")
         let processEnv = ProcessInfo.processInfo.environment

}

internal class ShellExecutor {
    func execute(_ command: String, arguments: [String] = [], environmentVariables: [String: String] = [:]) -> String {
        let task = makeTask(for: command, with: arguments, environmentVariables: environmentVariables)

        let pipe = Pipe()


    // Similar to above, but can throw, and throws with most of
    // what you'd probably need in a scripting environment
    func spawn(_ command: String,
               arguments: [String] = [],
               environmentVariables: [String: String] = [:]) throws -> String {
        let task = makeTask(for: command, with: arguments, environmentVariables: environmentVariables)

        let stdout = Pipe()
