module BuilderDirs (BuilderDirs(..), currentDir) where import Control.Applicative (liftA2) import Path (Abs, Dir, Path, Rel, (</>)) import Control.Monad.Trans.Reader (ReaderT, asks) data BuilderDirs = BuilderDirs { BuilderDirs -> Path Abs Dir _root :: Path Abs Dir , BuilderDirs -> Path Rel Dir _subdir :: Path Rel Dir } currentDir :: ReaderT BuilderDirs IO (Path Abs Dir) currentDir :: ReaderT BuilderDirs IO (Path Abs Dir) currentDir = (Path Abs Dir -> Path Rel Dir -> Path Abs Dir) -> ReaderT BuilderDirs IO (Path Abs Dir) -> ReaderT BuilderDirs IO (Path Rel Dir) -> ReaderT BuilderDirs IO (Path Abs Dir) forall (f :: * -> *) a b c. Applicative f => (a -> b -> c) -> f a -> f b -> f c liftA2 Path Abs Dir -> Path Rel Dir -> Path Abs Dir forall b t. Path b Dir -> Path Rel t -> Path b t (</>) ((BuilderDirs -> Path Abs Dir) -> ReaderT BuilderDirs IO (Path Abs Dir) forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a asks BuilderDirs -> Path Abs Dir _root) ((BuilderDirs -> Path Rel Dir) -> ReaderT BuilderDirs IO (Path Rel Dir) forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a asks BuilderDirs -> Path Rel Dir _subdir)