// // Shell.swift // // // Created by Thibaut Schmitt on 22/12/2021. // import Foundation public class Shell { @discardableResult public static func shell(_ args: String...) -> (terminationStatus: Int32, output: String?) { let task = Process() task.launchPath = "/usr/bin/env" task.arguments = args let pipe = Pipe() task.standardOutput = pipe task.launch() task.waitUntilExit() let data = pipe.fileHandleForReading.readDataToEndOfFile() guard let output: String = String(data: data, encoding: .utf8) else { return (terminationStatus: task.terminationStatus, output: nil) } return (terminationStatus: task.terminationStatus, output: output) } @discardableResult public static func shell(_ args: [String]) -> (terminationStatus: Int32, output: String?) { let task = Process() task.launchPath = "/usr/bin/env" task.arguments = args let pipe = Pipe() task.standardOutput = pipe task.launch() task.waitUntilExit() let data = pipe.fileHandleForReading.readDataToEndOfFile() guard let output: String = String(data: data, encoding: .utf8) else { return (terminationStatus: task.terminationStatus, output: nil) } return (terminationStatus: task.terminationStatus, output: output) } }