module Boots.Factory.Salak(
HasSalak(..)
, buildSalak
, MonadSalak(..)
) where
import Boots.App.Internal
import Boots.Factory
import Lens.Micro
import Lens.Micro.Extras
import Salak
import Salak.Yaml
class HasSalak env where
askSourcePack :: Lens' env SourcePack
instance HasSalak SourcePack where
askSourcePack = id
instance (HasSalak env, Monad m) => MonadSalak (Factory m env) where
askSalak = asks (view askSourcePack)
instance (HasSalak env, Monad m) => MonadSalak (AppT env m) where
askSalak = asks (view askSourcePack)
buildSalak :: (MonadIO m, MonadCatch m) => String -> Factory m () Salak
buildSalak name = offer $ runSalakWithYaml name askSalak