Open gwikiera opened 6 years ago
This looks good. @JohnSundell would you like any changes before merging this?
We could then add the implementation from @SteveBarnegren in #22 so that users can use FileHandle.standardOuput & FileHandle.standardError. I've tested out #22 locally.
private extension FileHandle {
var shouldBeClosed: Bool {
return self !== FileHandle.standardOutput &&
self !== FileHandle.standardError &&
self !== FileHandle.standardInput
}
}
extension FileHandle: Handle {
public func handle(data: Data) {
write(data)
}
public func endHandling() {
if shouldBeClosed { closeFile() }
// alternative using naming from #22
// if !isStandard { closeFile() }
}
}
I've created a protocol
Handle
to handle command output asynchronously. All previouslyFileHandle
arguments ofshellOut
methods have been replaced byHandle
.FileHandle
implementsHandle
so it's completely backward compatible.StringHandle
convertsData
output intoString
one.It fixes #11.