     return (0, right(left.stdout), "")
 }
 
+/**
+Executes a command with input from a closure.
+
+:param: left The closure to execute.
+:param: right The command to execute.
+:returns: A tuple containing the exit code, stdout and stderr output.
+*/
 public func | (left: (() -> String), right: String) -> ChoreResult {
     return (0, left(), "")|right
 }
 
+/**
+Executes a command with input from a closure.
+
+:param: left The closure to execute.
+:param: right The command to execute and its arguments.
+:returns: A tuple containing the exit code, stdout and stderr output.
+*/
 public func | (left: (() -> String), right: [String]) -> ChoreResult {
     return (0, left(), "")|right
 }
 
+/**
+Executes a command with input from a string.
+
+:param: left The string to use a stdin.
+:param: right The command to execute.
+:returns: A tuple containing the exit code, stdout and stderr output.
+*/
 public func | (left: String, right: String) -> ChoreResult {
     return (0, left, "")|right
 }
 
+/**
+Executes a command with input from a string.
+
+:param: left The string to use a stdin.
+:param: right The command to execute and its arguments.
+:returns: A tuple containing the exit code, stdout and stderr output.
+*/
 public func | (left: String, right: [String]) -> ChoreResult {
     return (0, left, "")|right
 }

    return chore_task(right[0], arguments, stdin: left.stdout)
}

public func | (left: ChoreResult, right: ((String) -> String)) -> ChoreResult {
    if left.result != 0 {
        return left


prefix operator > {}

/**
Executes a command.

:param: command The command to execute.
:returns: A tuple containing the exit code, stdout and stderr output.
*/
public prefix func > (command: String) -> ChoreResult {
    return chore_task(command)
}

/**
Executes a command with arguments.

:param: command The command to execute and its arguments.
:returns: A tuple containing the exit code, stdout and stderr output.
*/
public prefix func > (command: [String]) -> ChoreResult {
    switch command.count {
        case 0:
