packages feed

xdg-basedir-compliant-1.0.2: src/System/XDG/Env.hs

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