on v4.12.2.0 help sign in
hakyll/test.hs
30 lines 1.0 kB history raw
1{-# LANGUAGE BangPatterns #-}
2import Control.Monad (forM)
3import qualified Crypto.Hash.SHA256 as SHA256
4import qualified Data.ByteString.Base16 as Base16
5import qualified Data.ByteString.Char8 as BS8
6import qualified Data.ByteString.Lazy as BSL
7import Data.Map (Map)
8import qualified Data.Map as Map
9import Hakyll
10import System.FilePath ((</>))
12type FileHashes = Map Identifier String
14mkFileHashes :: FilePath -> IO FileHashes
15mkFileHashes dir = do
16 allFiles <- getRecursiveContents (\_ -> return False) dir
17 fmap Map.fromList $ forM allFiles $ \path0 -> do
18 let path1 = dir </> path0
19 !h <- hash path1
20 return (fromFilePath path1, h)
21 where
22 hash :: FilePath -> IO String
23 hash fp = do
24 !h <- SHA256.hashlazy <$> BSL.readFile fp
25 return $! BS8.unpack $! Base16.encode h
27main :: IO ()
28main = hakyll $ do
29 fileHashes <- preprocess (mkFileHashes "images")
30 undefined