on decrease-android-validity help sign in
24 lines 826 B history raw
1{-# LANGUAGE LambdaCase #-}
2{-# LANGUAGE OverloadedStrings #-}
3module Obelisk.Configs.Internal.Directory where
5import Control.Monad
6import Data.ByteString (ByteString)
7import qualified Data.ByteString as BS
8import Data.Map (Map)
9import qualified Data.Map as Map
10import Data.Text (Text)
11import qualified Data.Text as T
12import System.Directory
13import System.FilePath.Posix
15getConfigsFromDirectory :: FilePath -> IO (Map Text ByteString)
16getConfigsFromDirectory base = doesDirectoryExist base >>= \case
17 True -> do
18 ps <- listDirectory base
19 fmap mconcat $ forM ps $ \p -> do
20 subdirConfigs <- getConfigsFromDirectory $ base </> p
21 pure $ Map.mapKeys (T.pack . (p </>) . T.unpack) subdirConfigs
22 False -> doesFileExist base >>= \case
23 True -> Map.singleton "" <$> BS.readFile base
24 False -> pure mempty