hw-polysemy-0.2.0.0: core/HaskellWorks/Polysemy/System/Environment.hs
module HaskellWorks.Polysemy.System.Environment
( getArgs,
getProgName,
executablePath,
getExecutablePath,
getEnv,
lookupEnv,
setEnv,
unsetEnv,
getEnvironment,
) where
import qualified Control.Exception as CE
import HaskellWorks.Polysemy.Prelude
import Polysemy
import Polysemy.Error
import qualified System.Environment as IO
getArgs :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Sem r [String]
getArgs = withFrozenCallStack $
embed IO.getArgs
getProgName :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Sem r String
getProgName = withFrozenCallStack $
embed IO.getProgName
executablePath :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Maybe (Sem r (Maybe FilePath))
executablePath = withFrozenCallStack $
embed <$> IO.executablePath
getExecutablePath :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Sem r String
getExecutablePath = withFrozenCallStack $
embed IO.getExecutablePath
getEnv :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Member (Error IOException) r
=> String
-> Sem r String
getEnv name = withFrozenCallStack $ do
r <- embed $ CE.try @IOException $ IO.getEnv name
fromEither r
lookupEnv :: ()
=> HasCallStack
=> Member (Embed IO) r
=> String
-> Sem r (Maybe String)
lookupEnv name = withFrozenCallStack $
embed $ IO.lookupEnv name
setEnv :: ()
=> HasCallStack
=> Member (Error IOException) r
=> Member (Embed IO) r
=> String
-> String
-> Sem r ()
setEnv name value = withFrozenCallStack $ do
r <- embed $ CE.try @IOException $ IO.setEnv name value
fromEither r
unsetEnv :: ()
=> HasCallStack
=> Member (Error IOException) r
=> Member (Embed IO) r
=> String
-> Sem r ()
unsetEnv name = withFrozenCallStack $ do
r <- embed $ CE.try @IOException $ IO.unsetEnv name
fromEither r
getEnvironment :: ()
=> HasCallStack
=> Member (Embed IO) r
=> Sem r [(String, String)]
getEnvironment = withFrozenCallStack $
embed IO.getEnvironment