import Data.Conduit.LZ4 import Data.Conduit import Data.Conduit.Binary import Control.Monad.Trans.Resource import System.Environment import System.IO main :: IO () main = do args <- getArgs let conduit = case args of [] -> Just $ compress Nothing [arg] -> case reads arg of [(compression, "")] | compression < 0 -> Just decompress [(compression, "")] -> Just $ compress $ Just compression _ -> Nothing _ -> Nothing case conduit of Nothing -> help Just conduit' -> runResourceT $ sourceHandle stdin $$ conduit' =$= sinkHandle stdout where help = hPutStrLn stderr "optionally supply acceleration value (Int) as first argument (any negative number for decompression)\ntool will then use stdin/stdout"