on master help sign in
executable-config: Fix up internal directory module
commit911ee90aaa5b2e2524c5d6f10e69db9c3fbefcda authorAli Abrar <aliabrar@gmail.com> dateSat 15 Jun 2019, 12:21 (7 years ago) parent7dd157b
1 file changed+17−14
lib/executable-config/lookup/src/Obelisk/Configs/Internal/Directory.hs+17−14
lib/executable-config/lookup/src/Obelisk/Configs/Internal/Directory.hs+17−14
@@ -1,21 +1,24 @@
11{-# LANGUAGE LambdaCase #-}
2+{-# LANGUAGE OverloadedStrings #-}
23module Obelisk.Configs.Internal.Directory where
34
5+import Control.Monad
46import Data.ByteString (ByteString)
7+import qualified Data.ByteString as BS
8+import Data.Map (Map)
9+import qualified Data.Map as Map
510import Data.Text (Text)
11+import qualified Data.Text as T
12+import System.Directory
13+import System.FilePath.Posix
614
715getConfigsFromDirectory :: FilePath -> IO (Map Text ByteString)
8−getConfigsFromDirectory base = do
9− doesDirectoryExist base >>= \case
10− True -> do
11− ps <- listDirectory base
12− fmap mconcat $ forM ps $ \p -> do
13− subdirConfigs <- getConfigsFromDirectory $ base </> p
14− pure $ Map.mapKeys (T.pack . (p </>) . T.unpack) subdirConfigs
15− False -> do
16− doesFileExist base >>= \case
17− True -> do
18− f <- BS.readFile base
19− pure $ Map.singleton "" f
20− False -> do
21− pure mempty
16+getConfigsFromDirectory 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