summaryrefslogtreecommitdiff
path: root/test.hs
blob: 8b3a2de0648461ea9c7ecbdbc150c004e17eb14e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{-# LANGUAGE BangPatterns #-}
import           Control.Monad          (forM)
import qualified Crypto.Hash.SHA256     as SHA256
import qualified Data.ByteString.Base16 as Base16
import qualified Data.ByteString.Char8  as BS8
import qualified Data.ByteString.Lazy   as BSL
import           Data.Map               (Map)
import qualified Data.Map               as Map
import           Hakyll
import           System.FilePath        ((</>))

type FileHashes = Map Identifier String

mkFileHashes :: FilePath -> IO FileHashes
mkFileHashes dir = do
    allFiles <- getRecursiveContents (\_ -> return False) dir
    fmap Map.fromList $ forM allFiles $ \path0 -> do
        let path1 = dir </> path0
        !h <- hash path1
        return (fromFilePath path1, h)
  where
    hash :: FilePath -> IO String
    hash fp = do
        !h <- SHA256.hashlazy <$> BSL.readFile fp
        return $! BS8.unpack $! Base16.encode h

main :: IO ()
main = hakyll $ do
    fileHashes <- preprocess (mkFileHashes "images")
    undefined