module CabalGild.Class.MonadWrite where import qualified CabalGild.Type.Output as Output import qualified Data.ByteString as ByteString -- | A 'Monad' that can also write output, either to standard output (STDOUT) -- or to a file. class (Monad m) => MonadWrite m where -- | Writes output to the given 'Output.Output'. write :: Output.Output -> ByteString.ByteString -> m () -- | Uses 'ByteString.putStr' or 'ByteString.writeFile'. instance MonadWrite IO where write :: Output -> ByteString -> IO () write Output o = case Output o of Output Output.Stdout -> ByteString -> IO () ByteString.putStr Output.File FilePath f -> FilePath -> ByteString -> IO () ByteString.writeFile FilePath f