File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ -- | Wrappers for Yaml functions to workaround
2+ -- https://github.com/commercialhaskell/stack/issues/2491.
3+ -- Import Data.Yaml.Extra in place of Data.Yaml to use this workaround.
4+ -- Beware these functions construct/deconstruct the entire file at once!
5+ module Data.Yaml.Extra (decodeFileEither , encodeFile , module Data.Yaml ) where
6+
7+ import Data.Yaml hiding (decodeFileEither , encodeFile )
8+ import qualified Data.ByteString as B
9+ import System.IO
10+
11+ -- Note: we refrain from using 'B.readFile' and 'B.writeFile', as they open
12+ -- the file in binary mode rather than text mode.
13+ decodeFileEither :: FromJSON a => FilePath -> IO (Either ParseException a )
14+ decodeFileEither path = withFile path ReadMode $
15+ \ hnd -> do
16+ fileContent <- B. hGetContents hnd
17+ return $ decodeEither' fileContent
18+
19+ encodeFile :: ToJSON a => FilePath -> a -> IO ()
20+ encodeFile path v = withFile path WriteMode $
21+ \ hnd -> do
22+ let fileContent = encode v
23+ B. hPut hnd fileContent
Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ import qualified Data.Text as T
6666import Data.Text.Encoding (encodeUtf8 )
6767import qualified Data.Traversable as Tr
6868import Data.Typeable (Typeable )
69- import Data.Yaml (decodeEither' , decodeFileEither )
69+ import Data.Yaml.Extra (decodeEither' , decodeFileEither )
7070import qualified Distribution.Package as C
7171import Distribution.PackageDescription (GenericPackageDescription ,
7272 flagDefault , flagManual ,
Original file line number Diff line number Diff line change @@ -63,7 +63,7 @@ import Data.Monoid.Extra
6363import qualified Data.Text as T
6464import Data.Text.Encoding (encodeUtf8 , decodeUtf8 , decodeUtf8With )
6565import Data.Text.Encoding.Error (lenientDecode )
66- import qualified Data.Yaml as Yaml
66+ import qualified Data.Yaml.Extra as Yaml
6767import Distribution.System (OS (.. ), Platform (.. ), buildPlatform )
6868import qualified Distribution.Text
6969import Distribution.Version (simplifyVersionRange )
Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ import Control.Monad.Reader (MonadReader, asks)
1717import Control.Monad.Trans.Control (MonadBaseControl )
1818import qualified Data.ByteString as S
1919import qualified Data.HashMap.Strict as HMap
20- import qualified Data.Yaml as Yaml
20+ import qualified Data.Yaml.Extra as Yaml
2121import Network.HTTP.Client.Conduit (HasHttpManager )
2222import Path
2323import Stack.BuildPlan
Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ import Data.Text.Encoding.Error (lenientDecode)
5353import qualified Data.Text.Lazy as LT
5454import Data.Text.Lazy.Encoding (decodeUtf8With )
5555import Data.Tuple (swap )
56- import qualified Data.Yaml as Yaml
56+ import qualified Data.Yaml.Extra as Yaml
5757import qualified Distribution.Package as C
5858import qualified Distribution.PackageDescription as C
5959import qualified Distribution.Text as C
Original file line number Diff line number Diff line change @@ -66,6 +66,7 @@ library
6666 Data.Maybe.Extra
6767 Data.Monoid.Extra
6868 Data.Store.VersionTagged
69+ Data.Yaml.Extra
6970 Distribution.Version.Extra
7071 Network.HTTP.Download
7172 Network.HTTP.Download.Verified
You can’t perform that action at this time.
0 commit comments