{-# 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)