packages feed

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

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}

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)