{- |
   Module     : Development.Shake.Plus.Env
   License    : MIT
   Stability  : experimental

Environenment variable utilities in "Development.Shake" lifted to `MonadAction`.
-}
module Development.Shake.Plus.Env (
  getEnv
, getEnvWithDefault
, getEnvError
) where

import           Control.Exception.Extra
import qualified Development.Shake
import           Development.Shake.Plus
import           RIO

-- | Lifted version of `Development.Shake.getEnv`
getEnv :: MonadAction m => String -> m (Maybe String)
getEnv :: String -> m (Maybe String)
getEnv = Action (Maybe String) -> m (Maybe String)
forall (m :: * -> *) a. MonadAction m => Action a -> m a
liftAction (Action (Maybe String) -> m (Maybe String))
-> (String -> Action (Maybe String)) -> String -> m (Maybe String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Action (Maybe String)
Development.Shake.getEnv

-- | Lifted version of `Development.Shake.getEnvWithDefault`
getEnvWithDefault :: MonadAction m => String -> String -> m String
getEnvWithDefault :: String -> String -> m String
getEnvWithDefault String
def String
var = Action String -> m String
forall (m :: * -> *) a. MonadAction m => Action a -> m a
liftAction (Action String -> m String) -> Action String -> m String
forall a b. (a -> b) -> a -> b
$ String -> String -> Action String
Development.Shake.getEnvWithDefault String
def String
var

-- | Lifted version of `Development.Shake.getEnvError`
getEnvError :: (Partial, MonadAction m) => String -> m String
getEnvError :: String -> m String
getEnvError = Action String -> m String
forall (m :: * -> *) a. MonadAction m => Action a -> m a
liftAction (Action String -> m String)
-> (String -> Action String) -> String -> m String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Partial => String -> Action String
String -> Action String
Development.Shake.getEnvError