hsc3-0.21: Sound/Sc3/Common/Base/System.hs
module Sound.Sc3.Common.Base.System where
import Control.Exception {- base -}
import Data.Maybe {- base -}
import System.Environment {- base -}
{- | 'getEnv' with error handler to return default value. This almost works in hugs (IOException should be Exception, the signature can be elided)
>>> get_env_with_default "undefined_environment_variable" "default"
"default"
-}
get_env_with_default :: String -> String -> IO String
get_env_with_default variableName defaultValue =
Control.Exception.catch (getEnv variableName) ((\_ -> return defaultValue) :: IOException -> IO String)
{- | 'getEnvironment' with lookup and default value.
> get_env_default "PATH" "/usr/bin"
-}
get_env_default :: String -> String -> IO String
get_env_default variableName defaultValue = do
env <- getEnvironment
return (fromMaybe defaultValue (lookup variableName env))
{- | 'lookupEnv' with default value.
> lookup_env_default "PATH" "/usr/bin"
-}
lookup_env_default :: String -> String -> IO String
lookup_env_default e k = fmap (fromMaybe k) (lookupEnv e)