module Buffet.Test.ParseArguments ( get ) where import qualified Buffet.Ir.Ir as Ir import qualified Buffet.Test.Configuration as Configuration import qualified Buffet.Toolbox.ExceptionTools as ExceptionTools import qualified Control.Exception as Exception import qualified Data.Map.Strict as Map import qualified Data.Text as T import qualified Data.Yaml as Yaml import Prelude (FilePath, IO, Show, ($), (.), maybe, mconcat, pure, show) data Exception = Exception FilePath Yaml.ParseException instance Show Exception where show :: Exception -> String show (Exception String path ParseException exception) = [String] -> String forall a. Monoid a => [a] -> a mconcat [String path, String ":\n", ParseException -> String Yaml.prettyPrintParseException ParseException exception] instance Exception.Exception Exception get :: Configuration.Configuration -> IO (Map.Map Ir.Option T.Text) get :: Configuration -> IO (Map Option Text) get = IO (Map Option Text) -> (String -> IO (Map Option Text)) -> Maybe String -> IO (Map Option Text) forall b a. b -> (a -> b) -> Maybe a -> b maybe (Map Option Text -> IO (Map Option Text) forall (f :: * -> *) a. Applicative f => a -> f a pure Map Option Text forall k a. Map k a Map.empty) (\String file -> (ParseException -> Exception) -> IO (Either ParseException (Map Option Text)) -> IO (Map Option Text) forall e a b. Exception e => (a -> e) -> IO (Either a b) -> IO b ExceptionTools.eitherThrow (String -> ParseException -> Exception Exception String file) (IO (Either ParseException (Map Option Text)) -> IO (Map Option Text)) -> IO (Either ParseException (Map Option Text)) -> IO (Map Option Text) forall a b. (a -> b) -> a -> b $ String -> IO (Either ParseException (Map Option Text)) forall a. FromJSON a => String -> IO (Either ParseException a) Yaml.decodeFileEither String file) (Maybe String -> IO (Map Option Text)) -> (Configuration -> Maybe String) -> Configuration -> IO (Map Option Text) forall b c a. (b -> c) -> (a -> b) -> a -> c . Configuration -> Maybe String Configuration.arguments