{-# LANGUAGE TemplateHaskell, DataKinds #-} {-# OPTIONS_GHC -fplugin=Polysemy.Plugin #-} module System.XDG.Env where import Polysemy import System.Environment ( lookupEnv ) data Env m a where GetEnv ::String -> Env m (Maybe String) makeSem ''Env type EnvList = [(String, String)] runEnvList :: EnvList -> InterpreterFor Env r runEnvList envs = interpret (\(GetEnv name) -> pure $ lookup name envs) runEnvIO :: Member (Embed IO) r => InterpreterFor Env r runEnvIO = interpret (\(GetEnv name) -> embed $ lookupEnv name)