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