packages feed

config-manager-0.3.0.1: tests/Helper.hs

module Helper
  ( forceGetConfig
  , getConfig
  , eitherToMaybe
  ) where


import System.IO (hClose)
import System.IO.Temp (withSystemTempFile)
import System.Directory (removeFile)

import Data.Text (Text)
import qualified Data.Text.IO as T
import Data.Maybe (fromJust)

import Data.ConfigManager
import Data.ConfigManager.Types (Config)

forceGetConfig :: Text -> IO Config
forceGetConfig = (fmap fromJust) . getConfig

getConfig :: Text -> IO (Maybe Config)
getConfig input =
  withSystemTempFile "config-manager-test" (\filePath handle -> do
    hClose handle
    T.writeFile filePath input
    config <- readConfig filePath
    removeFile filePath
    return $ eitherToMaybe config
  )

eitherToMaybe :: Either a b -> Maybe b
eitherToMaybe (Left _) = Nothing
eitherToMaybe (Right x) = Just x