language-dickinson-1.2.0.0: src/Language/Dickinson/Lib.hs
module Language.Dickinson.Lib ( defaultLibPath
, dckPath
) where
import Data.List.Split (splitWhen)
import Paths_language_dickinson (getDataDir)
import System.Environment (lookupEnv)
import System.FilePath ((</>))
dckPath :: IO [FilePath]
dckPath = maybe [] splitEnv <$> lookupEnv "DCK_PATH"
splitEnv :: String -> [FilePath]
splitEnv = splitWhen (== ':')
preludeLibPath :: FilePath -> [FilePath] -> [FilePath]
preludeLibPath fp = (preludeDir :) . (libDir :)
where preludeDir = fp </> "prelude"
libDir = fp </> "lib"
homeMod :: IO ([FilePath] -> [FilePath])
homeMod = do
mHome <- lookupEnv "HOME"
pure $ case mHome of
Just h -> preludeLibPath (h </> ".emd")
Nothing -> id
defaultLibPath :: IO ([FilePath] -> [FilePath])
defaultLibPath = do
datadir <- getDataDir
(.) (preludeLibPath datadir) <$> homeMod