conferer-0.1.0.0: src/Conferer/Provider/Env.hs
module Conferer.Provider.Env where
import Data.Text (Text)
import qualified Data.Text as Text
import qualified System.Environment as System
import Conferer.Types
type LookupEnvFunc = (String -> IO (Maybe String))
keyToEnvVar :: Prefix -> Key -> Text
keyToEnvVar prefix (Path keys) =
Text.toUpper
$ Text.intercalate "_"
$ filter (/= mempty)
$ prefix : keys
mkEnvProvider :: Prefix -> ProviderCreator
mkEnvProvider prefix =
mkEnvProvider' System.lookupEnv prefix
mkEnvProvider' :: LookupEnvFunc -> Prefix -> ProviderCreator
mkEnvProvider' lookupEnv prefix = \_config ->
return $
Provider
{ getKeyInProvider = \k -> do
let envVarName = Text.unpack $ keyToEnvVar prefix k
fmap Text.pack <$> lookupEnv envVarName
}