module Conferer.Provider.Dhall where
import qualified Data.Text.IO as Text
import Dhall
import Dhall.JSON
import System.Directory (doesFileExist)
import Conferer.Provider.JSON
import Conferer.Provider.Files
import Conferer.Provider.Null
import Conferer.Types
mkDhallProvider :: ProviderCreator
mkDhallProvider config = do
filePath <- getFilePathFromEnv config "dhall"
fileExists <- doesFileExist filePath
if fileExists
then do
fileContent <- Text.readFile filePath
dahllExpr <- inputExpr fileContent
case dhallToJSON dahllExpr of
Right jsonConfig -> do
mkJsonProvider' jsonConfig config
Left compileError -> error (show compileError)
else do
mkNullProvider config