packages feed

zwirn-0.2.3.1: app/zwirnzi/CI/SetupDoux.hs

module CI.SetupDoux where

import CI.ConfigDoux as C
import Data.Maybe (fromMaybe)
import Data.Ratio ((%))
import Zwirn.Doux.Env
import Zwirn.Doux.Types (Stream (..))
import Zwirn.Doux.UI
import Zwirn.Language.Compiler as Compiler
import Zwirn.Language.Macro (defaultMacroMap)
import Prelude hiding (log)

setup :: FullConfig -> IO Environment
setup config = do
  str <- setupStream config
  let initE = getInitialEnv (toCiConfig $ fullConfigCi config) str
  fromMaybe initE <$> checkBoot print (ciConfigBootPath $ fullConfigCi config) initE

setupStream :: FullConfig -> IO Stream
setupStream config = startStream (toStream (1 % fromIntegral (C.ciConfigPrecision $ fullConfigCi config)) $ fullConfigStream config)

getInitialEnv :: Compiler.CiConfig -> Stream -> Environment
getInitialEnv config str = Environment (sState str) (playEnvFromStream str) (builtinEnvironmentWithStream str) (Just $ ConfigEnv configPath resetConfig) config defaultMacroMap