1-- | Unlifted "System.Environment".
2--
3-- @since 0.2.5.0
4module UnliftIO.Environment
5  ( getArgs
6  , getProgName
7  , getExecutablePath
8  , getEnv
9  , lookupEnv
10  , setEnv
11  , unsetEnv
12  , withArgs
13  , withProgName
14  , getEnvironment
15  ) where
16
17import Control.Monad.IO.Unlift
18import qualified System.Environment as E
19
20-- | Lifted 'E.getArgs'.
21--
22-- @since 0.2.5.0
23{-# INLINE getArgs #-}
24getArgs :: MonadIO m => m [String]
25getArgs = liftIO E.getArgs
26
27-- | Lifted 'E.getProgName'.
28--
29-- @since 0.2.5.0
30{-# INLINE getProgName #-}
31getProgName :: MonadIO m => m String
32getProgName = liftIO E.getProgName
33
34-- | Lifted 'E.getExecutablePath'.
35--
36-- @since 0.2.5.0
37{-# INLINE getExecutablePath #-}
38getExecutablePath :: MonadIO m => m FilePath
39getExecutablePath = liftIO E.getExecutablePath
40
41-- | Lifted 'E.getEnv'.
42--
43-- @since 0.2.5.0
44{-# INLINE getEnv #-}
45getEnv :: MonadIO m => String -> m String
46getEnv = liftIO . E.getEnv
47
48-- | Lifted 'E.lookupEnv'.
49--
50-- @since 0.2.5.0
51{-# INLINE lookupEnv #-}
52lookupEnv :: MonadIO m => String -> m (Maybe String)
53lookupEnv = liftIO . E.lookupEnv
54
55-- | Lifted 'E.setEnv'.
56--
57-- @since 0.2.5.0
58{-# INLINE setEnv #-}
59setEnv :: MonadIO m => String -> String -> m ()
60setEnv key_ value_ = liftIO (E.setEnv key_ value_)
61
62-- | Lifted 'E.unsetEnv'.
63--
64-- @since 0.2.5.0
65{-# INLINE unsetEnv #-}
66unsetEnv :: MonadIO m => String -> m ()
67unsetEnv = liftIO . E.unsetEnv
68
69-- | Unlifted 'E.withArgs'.
70--
71-- @since 0.2.5.0
72{-# INLINE withArgs #-}
73withArgs :: MonadUnliftIO m => [String] -> m a -> m a
74withArgs xs act = withRunInIO (\u -> E.withArgs xs (u act))
75
76-- | Unlifted 'E.withProgName'.
77--
78-- @since 0.2.5.0
79{-# INLINE withProgName #-}
80withProgName :: MonadUnliftIO m => String -> m a -> m a
81withProgName nm act = withRunInIO (\u -> E.withProgName nm (u act))
82
83-- | Lifted 'E.getEnvironment'.
84--
85-- @since 0.2.5.0
86{-# INLINE getEnvironment #-}
87getEnvironment :: MonadIO m => m [(String, String)]
88getEnvironment = liftIO E.getEnvironment
89