Skip to content

Commit

Permalink
New functions for completeness:
Browse files Browse the repository at this point in the history
* writeByteStringFileWithOwnerPermissions
* writeTextFileWithOwnerPermissions
  • Loading branch information
newhoggy committed Apr 6, 2023
1 parent 971156d commit 9076213
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 9 deletions.
3 changes: 3 additions & 0 deletions cardano-api/src/Cardano/Api.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,15 @@ module Cardano.Api (
-- ** IO
OutputFile(..),

writeByteStringFileWithOwnerPermissions,
writeByteStringFile,
writeByteStringOutput,

writeLazyByteStringFileWithOwnerPermissions,
writeLazyByteStringFile,
writeLazyByteStringOutput,

writeTextFileWithOwnerPermissions,
writeTextFile,
writeTextOutput,

Expand Down
36 changes: 27 additions & 9 deletions cardano-api/src/Cardano/Api/IO.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@
module Cardano.Api.IO
( OutputFile(..)

, writeByteStringFileWithOwnerPermissions
, writeByteStringFile
, writeByteStringOutput

, writeLazyByteStringFileWithOwnerPermissions
, writeLazyByteStringFile
, writeLazyByteStringOutput

, writeTextFileWithOwnerPermissions
, writeTextFile
, writeTextOutput

, writeLazyByteStringFileWithOwnerPermissions
) where

#if !defined(mingw32_HOST_OS)
Expand Down Expand Up @@ -108,6 +110,14 @@ writeByteStringFile :: MonadIO m => FilePath -> ByteString -> m (Either (FileErr
writeByteStringFile fp bs = runExceptT $
handleIOExceptT (FileIOError fp) $ BS.writeFile fp bs

writeByteStringFileWithOwnerPermissions
:: FilePath
-> BS.ByteString
-> IO (Either (FileError ()) ())
writeByteStringFileWithOwnerPermissions fp bs =
handleFileForWritingWithOwnerPermission fp $ \h ->
BS.hPut h bs

writeByteStringOutput :: MonadIO m => Maybe FilePath -> ByteString -> m (Either (FileError ()) ())
writeByteStringOutput mOutput bs = runExceptT $
case mOutput of
Expand All @@ -118,6 +128,14 @@ writeLazyByteStringFile :: MonadIO m => FilePath -> LBS.ByteString -> m (Either
writeLazyByteStringFile fp bs = runExceptT $
handleIOExceptT (FileIOError fp) $ LBS.writeFile fp bs

writeLazyByteStringFileWithOwnerPermissions
:: FilePath
-> LBS.ByteString
-> IO (Either (FileError ()) ())
writeLazyByteStringFileWithOwnerPermissions fp lbs =
handleFileForWritingWithOwnerPermission fp $ \h ->
LBS.hPut h lbs

writeLazyByteStringOutput :: MonadIO m => Maybe FilePath -> LBS.ByteString -> m (Either (FileError ()) ())
writeLazyByteStringOutput mOutput bs = runExceptT $
case mOutput of
Expand All @@ -128,16 +146,16 @@ writeTextFile :: MonadIO m => FilePath -> Text -> m (Either (FileError ()) ())
writeTextFile fp t = runExceptT $
handleIOExceptT (FileIOError fp) $ Text.writeFile fp t

writeTextFileWithOwnerPermissions
:: FilePath
-> Text
-> IO (Either (FileError ()) ())
writeTextFileWithOwnerPermissions fp t =
handleFileForWritingWithOwnerPermission fp $ \h ->
Text.hPutStr h t

writeTextOutput :: MonadIO m => Maybe FilePath -> Text -> m (Either (FileError ()) ())
writeTextOutput mOutput t = runExceptT $
case mOutput of
Just fp -> handleIOExceptT (FileIOError fp) $ Text.writeFile fp t
Nothing -> liftIO $ Text.putStr t

writeLazyByteStringFileWithOwnerPermissions
:: FilePath
-> LBS.ByteString
-> IO (Either (FileError ()) ())
writeLazyByteStringFileWithOwnerPermissions fp lbs =
handleFileForWritingWithOwnerPermission fp $ \h ->
LBS.hPut h lbs

0 comments on commit 9076213

Please sign in to comment.