Skip to content

Commit 7f1dd84

Browse files
committed
New writeByteStringFile, writeByteStringOutput, writeTextFile and writeTextOutput functions
1 parent c3f31ed commit 7f1dd84

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

cardano-api/src/Cardano/Api.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ module Cardano.Api (
3636
-- ** IO
3737
OutputFile(..),
3838

39+
writeByteStringFile,
40+
writeByteStringOutput,
41+
42+
writeTextFile,
43+
writeTextOutput,
44+
3945
-- ** Deprecated
4046
Byron,
4147
Shelley,

cardano-api/src/Cardano/Api/IO.hs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,43 @@
11
module Cardano.Api.IO
22
( OutputFile(..)
3+
4+
, writeByteStringFile
5+
, writeByteStringOutput
6+
7+
, writeTextFile
8+
, writeTextOutput
39
) where
410

11+
import Cardano.Api.Error (FileError (..))
12+
13+
import Control.Monad.IO.Class (MonadIO (..))
14+
import Control.Monad.Trans.Except (ExceptT)
15+
import Control.Monad.Trans.Except.Extra (handleIOExceptT)
16+
import Data.ByteString (ByteString)
17+
import qualified Data.ByteString.Char8 as BS
18+
import qualified Data.ByteString.Char8 as BSC
19+
import Data.Text (Text)
20+
import qualified Data.Text.IO as Text
21+
522
newtype OutputFile = OutputFile
623
{ unOutputFile :: FilePath
724
}
825
deriving Show
26+
27+
writeByteStringFile :: MonadIO m => OutputFile -> ByteString -> ExceptT (FileError ()) m ()
28+
writeByteStringFile (OutputFile fp) bs =
29+
handleIOExceptT (FileIOError fp) $ BS.writeFile fp bs
30+
31+
writeByteStringOutput :: MonadIO m => Maybe OutputFile -> ByteString -> ExceptT (FileError ()) m ()
32+
writeByteStringOutput mOutput bs = case mOutput of
33+
Just (OutputFile fp) -> handleIOExceptT (FileIOError fp) $ BS.writeFile fp bs
34+
Nothing -> liftIO $ BSC.putStr bs
35+
36+
writeTextFile :: MonadIO m => OutputFile -> Text -> ExceptT (FileError ()) m ()
37+
writeTextFile (OutputFile fp) t =
38+
handleIOExceptT (FileIOError fp) $ Text.writeFile fp t
39+
40+
writeTextOutput :: MonadIO m => Maybe OutputFile -> Text -> ExceptT (FileError ()) m ()
41+
writeTextOutput mOutput t = case mOutput of
42+
Just (OutputFile fp) -> handleIOExceptT (FileIOError fp) $ Text.writeFile fp t
43+
Nothing -> liftIO $ Text.putStr t

0 commit comments

Comments
 (0)