0001
0009 import Foundation
0010
0011
0012 class 🏃| ShortHandRunner.swift:20 | return 🏃.run(command, args: args as [String]) |
| ShortHandRunner.swift:33 | return 🏃.run(command, args: args) |
| ShortHandRunner.swift:46 | return 🏃.run(command, settings: settingsBlock) |
| ShortHandRunner.swift:60 | return 🏃.run(command, args: args, settings: settings) |
| ShortHandRunner.swift:73 | return 🏃.run(command, echo: echo) |
| ShortHandRunner.swift:84 | return 🏃.runWithoutCapture(command) |
{
0013
0014 class func runWithoutCapture| ShortHandRunner.swift:84 | return 🏃.runWithoutCapture(command) |
(command: String) -> Int {
0015 let initalSettings = RunSettings()
0016 initalSettings.interactive = true
0017 return run(command, args: [], settings: initalSettings).exitStatus
0018 }
0019
0020 class func run(command: String, args: String...) -> RunResults {
0021 return run(command, args: args as [String])
0022 }
0023
0024 class func run| Runner.swift:21 | return run(command, args: args as [String]) |
| ShortHandRunner.swift:20 | return 🏃.run(command, args: args as [String]) |
| ShortHandRunner.swift:33 | return 🏃.run(command, args: args) |
(command: String, args: [String]) -> RunResults {
0025 let settings = RunSettings()
0026 return run(command, args: args, settings: settings)
0027 }
0028
0029 class func run| ShortHandRunner.swift:46 | return 🏃.run(command, settings: settingsBlock) |
(command: String, settings: (RunSettings -> Void)) -> RunResults {
0030 let initalSettings = RunSettings()
0031 settings(initalSettings)
0032
0033 return run(command, args: [], settings: initalSettings)
0034 }
0035
0036 class func run| ShortHandRunner.swift:60 | return 🏃.run(command, args: args, settings: settings) |
(command: String, args: [String], settings: (RunSettings -> Void)) -> RunResults {
0037 let initalSettings = RunSettings()
0038 settings(initalSettings)
0039
0040 return run(command, args: args, settings: initalSettings)
0041 }
0042
0043 class func run| ShortHandRunner.swift:73 | return 🏃.run(command, echo: echo) |
(command: String, echo: EchoSettings) -> RunResults {
0044 let initalSettings = RunSettings()
0045 initalSettings.echo = echo
0046 return run(command, args: [], settings: initalSettings)
0047 }
0048
0049 class func run| Runner.swift:17 | return run(command, args: [], settings: initalSettings).exitStatus |
| Runner.swift:26 | return run(command, args: args, settings: settings) |
| Runner.swift:33 | return run(command, args: [], settings: initalSettings) |
| Runner.swift:40 | return run(command, args: args, settings: initalSettings) |
| Runner.swift:46 | return run(command, args: [], settings: initalSettings) |
(command: String, args: [String], settings: RunSettings) -> RunResults {
0050
0051 let commandParts = commandToRun(command, args: args)
0052
0053 let result: RunResults
0054
0055 echoCommand(commandParts, settings: settings)
0056
0057 if settings.dryRun {
0058 result = executeDryCommand(commandParts)
0059 } else if settings.interactive {
0060 result = executeIneractiveCommand(commandParts)
0061 } else {
0062 result = executeActualCommand(commandParts)
0063 }
0064
0065 echoResult(result, settings: settings)
0066
0067 return result
0068 }
0069
0070 private class func executeDryCommand| Runner.swift:58 | result = executeDryCommand(commandParts) |
(commandParts: [String]) -> RunResults {
0071 return execute(commandParts, withExecutor: DryTaskExecutor())
0072 }
0073
0074 private class func executeIneractiveCommand| Runner.swift:60 | result = executeIneractiveCommand(commandParts) |
(commandParts: [String]) -> RunResults {
0075 return execute(commandParts, withExecutor: InteractiveTaskExecutor())
0076 }
0077
0078 private class func executeActualCommand| Runner.swift:62 | result = executeActualCommand(commandParts) |
(commandParts: [String]) -> RunResults {
0079 return execute(commandParts, withExecutor: CommandExecutor.currentTaskExecutor)
0080 }
0081
0082 private class func execute| Runner.swift:71 | return execute(commandParts, withExecutor: DryTaskExecutor()) |
| Runner.swift:75 | return execute(commandParts, withExecutor: InteractiveTaskExecutor()) |
| Runner.swift:79 | return execute(commandParts, withExecutor: CommandExecutor.currentTaskExecutor) |
(commandParts: [String], withExecutor executor: TaskExecutor) -> RunResults {
0083 let (status, stdoutPipe, stderrPipe) = executor.execute(commandParts)
0084
0085 let stdout = readPipe(stdoutPipe).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
0086 let stderr = readPipe(stderrPipe).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
0087 return RunResults(exitStatus: status, stdout: stdout, stderr: stderr)
0088 }
0089
0090 private class func commandToRun| Runner.swift:51 | let commandParts = commandToRun(command, args: args) |
(command: String, args: [String]) -> [String] {
0091 return splitCommandToArgs(command) + args
0092 }
0093
0094 private class func echoCommand| Runner.swift:55 | echoCommand(commandParts, settings: settings) |
(command: [String], settings: RunSettings) {
0095 if settings.echo.contains(.Command) {
0096 echoStringIfNotEmpty("Command", string: command.joinWithSeparator(" "))
0097 }
0098 }
0099
0100 private class func echoResult| Runner.swift:65 | echoResult(result, settings: settings) |
(result: RunResults, settings: RunSettings) {
0101 if settings.echo.contains(.Stdout) {
0102 echoStringIfNotEmpty("Stdout", string: result.stdout)
0103 }
0104
0105 if settings.echo.contains(.Stderr) {
0106 echoStringIfNotEmpty("Stderr", string: result.stderr)
0107 }
0108 }
0109
0110 private class func echoStringIfNotEmpty| Runner.swift:96 | echoStringIfNotEmpty("Command", string: command.joinWithSeparator(" ")) |
| Runner.swift:102 | echoStringIfNotEmpty("Stdout", string: result.stdout) |
| Runner.swift:106 | echoStringIfNotEmpty("Stderr", string: result.stderr) |
(title: String, string: String) {
0111 if !string.isEmpty {
0112 PromptSettings.print("\(title): \n\(string)")
0113 }
0114 }
0115 }
0116