Add "parameters" function for turning a sequence into valid parameters for a shell command, properly quoted.
This commit is contained in:
@@ -86,3 +86,7 @@ public func $ (shellcommand: String) -> String {
|
||||
return output.fileHandleForReading.read().trim()
|
||||
}
|
||||
|
||||
/** Turn a sequence into valid parameters for a shell command, properly quoted */
|
||||
public func parameters <S : SequenceType>(sequence: S) -> String {
|
||||
return sequence |> map {"\"\(toString($0))\""} |> join(" ")
|
||||
}
|
||||
|
||||
@@ -32,4 +32,20 @@ class Command_Tests: XCTestCase {
|
||||
let result = stream("line 1\nline 2\nline 3") |> SwiftShell.run("grep " + $("echo 2"))
|
||||
XCTAssertEqual( result.read(), "line 2\n")
|
||||
}
|
||||
|
||||
func testParametersFromSequenceOfStrings () {
|
||||
XCTAssertEqual( parameters(["one", "two", "three"]), "\"one\" \"two\" \"three\"" )
|
||||
}
|
||||
|
||||
func testParametersFromSequenceOfStreams () {
|
||||
var (writable, readable) = streams()
|
||||
|
||||
let result = SequenceOf([stream("one"), stream("two"), stream("three")].generate()) |> parameters
|
||||
|
||||
XCTAssertEqual( result, "\"one\" \"two\" \"three\"" )
|
||||
}
|
||||
|
||||
func testParametersFromSequenceOfNumbers () {
|
||||
XCTAssertEqual( parameters([1, 2, 3]), "\"1\" \"2\" \"3\"" )
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user