# Shake+ - Super Powered Shake Attempt at a batteries included Shake. We reexport replacements for the main utility functions of Shake with the following adjustments whereever possible. * Well-typed paths using the [path](https://hackage.haskell.org/package/path) * New type classes `MonadAction`,`MonadUnliftAction` and `MonadRules` with stock `ReaderT` transformers. * `Text` instead of `String` wherever it is appropriate. Unlifting `Action`s is a challenge when we cross monad boundaries (from `Action` to `Rules`), and so some functions are hard coded against the `RAction` type, which is a hardcoded newtype `ReaderT r Action a`. This is annoying, but it's sufficient to add your own logging and reader lenses. It may be possible to generalize this with some unlifting contortion but so far I haven't been able to figure it out. The main entry point ot this library is the `runShakePlus` function, which collapses a `ReaderT r Rules ()` to a `Rules ()` and passes the environment to each underlying `RAction`. This is an early release and a lot of things may be missing or broken, but so far the conveniences have been worth it. Until it's stable/complete you probaly want to `import qualified Development.Shake` to deal with any missing parts.