haskell-awk-1.2: src/System/Console/Hawk/PackageDbs/TH.hs
{-# LANGUAGE CPP #-}
module System.Console.Hawk.PackageDbs.TH
( compileTimeEnvVar
, compileTimeWorkingDirectory
) where
import Language.Haskell.TH.Syntax (TExp(TExp), Q, lift, runIO)
#if MIN_VERSION_template_haskell(2,17,0)
import Language.Haskell.TH.Syntax (Code, liftCode)
#endif
import System.Directory (getCurrentDirectory)
import System.Environment (getEnvironment)
#if !MIN_VERSION_template_haskell(2,17,0)
type Code m a = m (TExp a)
liftCode :: m (TExp a) -> Code m a
liftCode = id
#endif
compileTimeEnvVar :: String -> Code Q (Maybe String)
compileTimeEnvVar varname = liftCode $ do
env <- runIO getEnvironment
let r :: Maybe String
r = lookup varname env
TExp <$> lift r
compileTimeWorkingDirectory :: Code Q String
compileTimeWorkingDirectory = liftCode $ do
pwd <- runIO getCurrentDirectory
TExp <$> lift pwd