packages feed

read-env-var 0.1.0.0 → 0.1.0.1

raw patch · 2 files changed

+37/−8 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ System.ReadEnvVar: lookupEnvDef :: IsString a => String -> a -> IO a

Files

read-env-var.cabal view
@@ -1,5 +1,5 @@ name:                read-env-var-version:             0.1.0.0+version:             0.1.0.1 synopsis:            Functions for safely reading environment variables. description:         Please see README.md homepage:            https://github.com/cdepillabout/read-env-var#readme
src/System/ReadEnvVar.hs view
@@ -14,6 +14,7 @@ module System.ReadEnvVar     ( readEnvVar     , readEnvVarDef+    , lookupEnvDef     ) where  #if __GLASGOW_HASKELL__ < 710@@ -23,6 +24,7 @@ #endif  import Data.Maybe (fromMaybe)+import Data.String (IsString(fromString)) import System.Environment (lookupEnv) import Text.Read (readMaybe) @@ -30,12 +32,20 @@ -- 'readMaybe'.  If the environment variable doesn't exist, or it can't be -- 'read', use the default value. --+-- Note that this does not read string values as one would expect.+-- -- >>> import System.Environment (setEnv)--- >>> setEnv "TEST_ENV_VAR" "1000"--- >>> readEnvVarDef "TEST_ENV_VAR" 5 :: IO Int+-- >>> setEnv "TEST_ENV_VAR1" "1000"+-- >>> readEnvVarDef "TEST_ENV_VAR1" 5 :: IO Int -- 1000 -- >>> readEnvVarDef "THIS_ENV_VAR_WILL_NOT_EXIST" 5 :: IO Int -- 5+-- >>> setEnv "TEST_ENV_VAR2" "some string 1"+-- >>> readEnvVarDef "TEST_ENV_VAR2" "def val" :: IO String+-- "def val"+-- >>> setEnv "TEST_ENV_VAR3" "\"some string 1\""+-- >>> readEnvVarDef "TEST_ENV_VAR3" "def val" :: IO String+-- "some string 1" readEnvVarDef :: Read a               => String -- ^ environment variable to lookup               -> a      -- ^ default value to use if the environment variable@@ -46,17 +56,36 @@ -- | Lookup a value from an environment variable and read it in with -- 'readMaybe'. --+-- Note that this does not read string values as one would expect.+-- -- >>> import System.Environment (setEnv) -- >>> setEnv "TEST_ENV_VAR" "2000" -- >>> readEnvVar "TEST_ENV_VAR" :: IO (Maybe Int) -- Just 2000 -- >>> readEnvVar "THIS_ENV_VAR_WILL_NOT_EXIST" :: IO (Maybe Int) -- Nothing+-- >>> setEnv "TEST_ENV_VAR2" "some string 1"+-- >>> readEnvVar "TEST_ENV_VAR2" :: IO (Maybe String)+-- Nothing+-- >>> setEnv "TEST_ENV_VAR3" "\"some string 1\""+-- >>> readEnvVar "TEST_ENV_VAR3" :: IO (Maybe String)+-- Just "some string 1" readEnvVar :: Read a            => String       -- ^ environment variable to lookup            -> IO (Maybe a)-readEnvVar envVar = do-    maybeEnvVal <- lookupEnv envVar-    case maybeEnvVal of-        Nothing -> return Nothing-        Just envVal -> return $ readMaybe envVal+readEnvVar = fmap (>>= readMaybe) . lookupEnv++-- | Like 'lookupEnv' but take a default value.+--+-- >>> import System.Environment (setEnv)+-- >>> setEnv "TEST_ENV_VAR" "foo"+-- >>> lookupEnvDef "TEST_ENV_VAR" "bar" :: IO String+-- "foo"+-- >>> lookupEnvDef "THIS_ENV_VAR_WILL_NOT_EXIST" "bar" :: IO String+-- "bar"+lookupEnvDef :: IsString a+             => String  -- ^ environment variable to lookup+             -> a       -- ^ default value to use if environment variable not defined+             -> IO a+lookupEnvDef envVar defaultValue =+    pure . maybe defaultValue fromString =<< lookupEnv envVar