napkin-0.5.14
Copyright(c) Soostone Inc 2020
LicenseAllRightsReserved
Stabilityexperimental
PortabilityPOSIX
Safe HaskellSafe-Inferred
LanguageGHC2021

Napkin.Spec.Yaml.Interpret

Description

This module should be seen as an interpreter that takes the YAML version of a spec and converts it to a proper, fully typed Spec value.

In a sense, it's also a bit of a typechecker: YAML versions are necessarily dynamically typed and there's the possibility of type mismatches.

Synopsis

Documentation

loadYamlFile :: forall m a. MonadIO m => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either NapkinError a) #

loadYamlFile' :: forall m a. (MonadError NapkinError m, MonadIO m) => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m a #

loadYaml' :: forall m a. Monad m => Value -> Maybe Patch -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either Text a) #

loadHaskellModules :: forall bk m. (ToDbBackend bk, Typeable bk, MonadIO m) => InterpreterInstance -> YamlSpec bk -> m (Either HaskellEvaluationError ()) #

The main entry point interpreting a given YAML spec file as a Spec value ready to run via executeSpec

This function is intended to unroll/interpret as much as possible to get the spec in its final state ready to be actually run.

interpretTable :: forall bk m. (MonadIO m, Typeable bk) => InterpreterInstance -> SpecTableName -> YamlTableSpec bk -> ExceptT HaskellEvaluationError m (SpecProgramArguments, Spec bk ()) #

Main entry point for fully interpreting a given table's entry in the YAML file.