packages feed

keid-core-0.1.0.0: src/Engine/App.hs

module Engine.App
  ( engineMain
  , engineMainWith
  ) where

import RIO

import RIO.App (appMain)
import Engine.Run (runStack)
import Engine.Setup (setup)
import Engine.Types qualified as Engine
import Engine.Types.Options (Options(..), getOptions)
import Engine.Stage.Bootstrap.Setup qualified as Bootstrap

engineMain :: Engine.StackStage -> IO ()
engineMain initialStage = engineMainWith (\() -> initialStage) (pure ())

engineMainWith :: (a -> Engine.StackStage) -> Engine.StageSetupRIO a -> IO ()
engineMainWith handoff action =
  appMain getOptions optionsVerbose setup $ runStack
    [ -- XXX: run swapchain bootstrap and replace with next stage
      Bootstrap.stackStage handoff action
    ]