 
 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:


infix operator | {}

public func | (left: ChoreResult, right: String) -> ChoreResult {
    return left|[right]
}

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

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

/**
Executes a closure with input from a previous command.

:param: left The result of a previous command.
:param: right The closure to execute.
:returns: A tuple containing the exit code, stdout and stderr output.
*/
public func | (left: ChoreResult, right: ((String) -> String)) -> ChoreResult {
    if left.result != 0 {
        return left
