@@ -4,14 +4,12 @@ module Obelisk.ExecutableConfig.Internal where
44import Control.Exception (bracket)
55import Control.Monad (forM)
66import qualified Data.ByteString as BS
7−import Data.List (sortOn)
8−import Data.Maybe (catMaybes, maybe)
7+import Data.Map (Map)
8+import qualified Data.Map as Map
99import Data.Text (Text)
10−import qualified Data.Text as T
1110import qualified Data.Text.Encoding as T
1211import Foreign.C.String (withCString)
1312import Foreign.Ptr (nullPtr)
14−import System.FilePath.Posix ((</>))
1513
1614import Obelisk.ExecutableConfig.Internal.AssetManager
1715
@@ -29,7 +27,7 @@ getFromMgr mgr name = do
2927 l <- asset_getLength asset
3028 fmap T.decodeUtf8 $ BS.packCStringLen (b, fromIntegral l)
3129
32−getFrontendConfigs :: IO [(Text, Text)]
30+getFrontendConfigs :: IO (Map Text Text)
3331getFrontendConfigs = bracket getAssets freeAssetManager $ \mgrObj -> do
3432 mgr <- assetManagerFromJava mgrObj
3533 let openDir = do
@@ -45,8 +43,10 @@ getFrontendConfigs = bracket getAssets freeAssetManager $ \mgrObj -> do
4543 l <- asset_getLength asset
4644 lines0 <$> BS.packCStringLen (b, fromIntegral l)
4745 Nothing -> error "could not open configuration manifest 'config.files'"
48− fmap catMaybes $ forM configPaths $ \fp ->
49− fmap (\v -> (T.decodeUtf8 fp,v)) <$> getFromMgr mgr fp
46+ fmap Map.fromList $ forM configPaths $ \fp ->
47+ getFromMgr mgr fp >>= \case
48+ Just v -> return (T.decodeUtf8 fp, v)
49+ Nothing -> error $ "Config present in config.files but not in assets: " <> show fp
5050
5151lines0 :: BS.ByteString -> [BS.ByteString]
5252lines0 ps