content: -- | Unlifted "System.Environment".
  --
  -- @since 0.2.5.0
  module UnliftIO.Environment
    ( getArgs
    , getProgName
    , getExecutablePath
    , getEnv
    , lookupEnv
    , setEnv
    , unsetEnv
    , withArgs
    , withProgName
    , getEnvironment
    ) where
  
  import Control.Monad.IO.Unlift
  import qualified System.Environment as E
  
  -- | Lifted 'E.getArgs'.
  --
  -- @since 0.2.5.0
  {-# INLINE getArgs #-}
  getArgs :: MonadIO m => m [String]
  getArgs = liftIO E.getArgs
  
  -- | Lifted 'E.getProgName'.
  --
  -- @since 0.2.5.0
  {-# INLINE getProgName #-}
  getProgName :: MonadIO m => m String
  getProgName = liftIO E.getProgName
  
  -- | Lifted 'E.getExecutablePath'.
  --
  -- @since 0.2.5.0
  {-# INLINE getExecutablePath #-}
  getExecutablePath :: MonadIO m => m FilePath
  getExecutablePath = liftIO E.getExecutablePath
  
  -- | Lifted 'E.getEnv'.
  --
  -- @since 0.2.5.0
  {-# INLINE getEnv #-}
  getEnv :: MonadIO m => String -> m String
  getEnv = liftIO . E.getEnv
  
  -- | Lifted 'E.lookupEnv'.
  --
  -- @since 0.2.5.0
  {-# INLINE lookupEnv #-}
  lookupEnv :: MonadIO m => String -> m (Maybe String)
  lookupEnv = liftIO . E.lookupEnv
  
  -- | Lifted 'E.setEnv'.
  --
  -- @since 0.2.5.0
  {-# INLINE setEnv #-}
  setEnv :: MonadIO m => String -> String -> m ()
  setEnv key_ value_ = liftIO (E.setEnv key_ value_)
  
  -- | Lifted 'E.unsetEnv'.
  --
  -- @since 0.2.5.0
  {-# INLINE unsetEnv #-}
  unsetEnv :: MonadIO m => String -> m ()
  unsetEnv = liftIO . E.unsetEnv
  
  -- | Unlifted 'E.withArgs'.
  --
  -- @since 0.2.5.0
  {-# INLINE withArgs #-}
  withArgs :: MonadUnliftIO m => [String] -> m a -> m a
  withArgs xs act = withRunInIO (\u -> E.withArgs xs (u act))
  
  -- | Unlifted 'E.withProgName'.
  --
  -- @since 0.2.5.0
  {-# INLINE withProgName #-}
  withProgName :: MonadUnliftIO m => String -> m a -> m a
  withProgName nm act = withRunInIO (\u -> E.withProgName nm (u act))
  
  -- | Lifted 'E.getEnvironment'.
  --
  -- @since 0.2.5.0
  {-# INLINE getEnvironment #-}
  getEnvironment :: MonadIO m => m [(String, String)]
  getEnvironment = liftIO E.getEnvironment
  