module Boots.Plugin.Salak(
HasSalak(..)
, pluginSalak
, MonadSalak(..)
) where
import Boots.Internal
import Control.Monad.Reader
import Lens.Micro
import Lens.Micro.Extras
import Salak
import Salak.Yaml
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)
pluginSalak
:: (MonadIO m, MonadCatch m)
=> String
-> Plugin () m SourcePack
pluginSalak name = lift $ runSalakWithYaml name askSalak