This package provides conduit for processes. Also this provides quasi-quoters for process using it.
$ cabal update
$ cabal install process-conduit
Haddock documents are here:
http://hackage.haskell.org/package/process-conduit
process-conduit has three quasi-quoters, cmd
, scmd
and ccmd
.
The result type of cmd
is Lazy ByteString
,
but execution will perform strictly.
The result type of scmd
and ccmd
are
GSource m ByteString
and
GConduit ByteString m ByteString
respectively.
If a command is failed, an exception is thrown.
Commands are executed in run-time, not compile-time.
- Create a Source and a Conduit of process
import Data.Conduit
import qualified Data.Conduit.Binary as CB
import Data.Conduit.Process
import System.IO
main :: IO ()
main = runResourceT $ do
sourceCmd "ls" $= conduitCmd "sort" $$ CB.sinkHandle stdout
- Invoke a process simply
{-# LANGUAGE QuasiQuotes #-}
import System.Process.QQ
main = print =<< [cmd|ls|]
- Conduit Quasi-Quoters
main :: IO ()
main = runResourceT $ do
[scmd|ls|] $= [ccmd|sort|] $$ CB.sinkHandle stdout
- Unquoting (syntax is same as shakespeare-text)
main = do
[url] <- getArgs
print =<< [cmd|curl #{url}|]