Description
Prevent or capture writing to stdout and other handles.
Description
Prevent or capture writing to stdout, stderr, and other handles.
README.md
silently
Silently is a package that allows you to run an IO
action and prevent it from writing to stdout
, or any other handle, by using silence
. Or you can capture the output for yourself using capture
.
For example, the program
import System.IO.Silently
main = do
putStr "putStrLn: " >> putStrLn "puppies!"
putStr "silenced: " >> silence (putStrLn "kittens!")
putStrLn ""
(captured, result) <- capture (putStr "wookies!" >> return 123)
putStr "captured: " >> putStrLn captured
putStr "returned: " >> putStrLn (show result)
will print:
putStrLn: puppies!
silenced:
captured: wookies!
returned: 123
Limitations
Capturing/silencing might not work as expected if the action uses the FFI or conceals output under unsafePerformIO
or similar unsafe operations.
Examples:
- FFI: https://github.com/hspec/silently/issues/3
unsafePerformIO
: https://github.com/bos/filemanip/issues/22