module Hix.Managed.Path where

import Path (Abs, Dir, Path)
import Path.IO (getCurrentDir)

import Hix.Data.Monad (M)
import Hix.Monad (tryIOM)

-- TODO find better home
rootOrCwd ::
  Maybe (Path Abs Dir) ->
  M (Path Abs Dir)
rootOrCwd :: Maybe (Path Abs Dir) -> M (Path Abs Dir)
rootOrCwd =
  M (Path Abs Dir)
-> (Path Abs Dir -> M (Path Abs Dir))
-> Maybe (Path Abs Dir)
-> M (Path Abs Dir)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (IO (Path Abs Dir) -> M (Path Abs Dir)
forall a. IO a -> M a
tryIOM IO (Path Abs Dir)
forall (m :: * -> *). MonadIO m => m (Path Abs Dir)
getCurrentDir) Path Abs Dir -> M (Path Abs Dir)
forall a. a -> M a
forall (f :: * -> *) a. Applicative f => a -> f a
pure