-- |
-- Module:      Boots.Internal
-- Copyright:   2019 Daniel YU
-- License:     BSD3
-- Maintainer:  leptonyu@gmail.com
-- Stability:   experimental
-- Portability: portable
--
-- Boot cores.
--
module Boots.Internal(
  -- * Main function
    booting
  -- * Application
  , module Boots.Internal.App
  -- * Application plugin
  , module Boots.Internal.Plugin
  ) where

import           Boots.Internal.App
import           Boots.Internal.Plugin

-- | Run application using a plugin. Context @cxt@ can't escape from @m@.
booting :: Plugin () m cxt -> AppT cxt m () -> m ()
booting plugin app = runPlugin () plugin (`runAppT` app)