boots-0: src/Boots/Plugin/Salak.hs
-- |
-- Module: Boots.Plugin.Salak
-- Copyright: 2019 Daniel YU
-- License: BSD3
-- Maintainer: leptonyu@gmail.com
-- Stability: experimental
-- Portability: portable
--
-- This module wrap 'salak' into a plugin.
--
module Boots.Plugin.Salak(
HasSalak(..)
, pluginSalak
-- ** Configuration Functions
, MonadSalak(..)
) where
import Boots.Internal
import Control.Monad.Reader
import Lens.Micro
import Lens.Micro.Extras
import Salak
import Salak.Yaml
-- | Environment providing a configuration parser.
class HasSalak cxt where
askSourcePack :: Lens' cxt SourcePack
instance HasSalak SourcePack where
askSourcePack = id
instance HasSalak cxt => MonadSalak (Plugin cxt m) where
askSalak = asks (view askSourcePack)
instance (Monad m, HasSalak cxt) => MonadSalak (AppT cxt m) where
askSalak = asks (view askSourcePack)
-- | Plugin used for parse properties.
pluginSalak
:: (MonadIO m, MonadCatch m)
=> String -- ^ Configuration file name.
-> Plugin () m SourcePack
pluginSalak name = lift $ runSalakWithYaml name askSalak