{-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} module Language.Haskell.TH.Env (envQ) where import Data.String import Language.Haskell.TH import System.Environment -- | Produce a typed expression with the current value of an -- environment variable. envQ :: IsString a => String -- ^ Environment variable name. -> TExpQ (Maybe a) envQ name = runIO (lookupEnv name) >>= \case Just v -> [|| Just (fromString v) ||] Nothing -> [|| Nothing ||]