0001    //
0002    //  Runner.swift
0003    //  🏃
0004    //
0005    //  Created by Omar Abdelhafith on 02/11/2015.
0006    //  Copyright © 2015 Omar Abdelhafith. All rights reserved.
0007    //
0008    
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