Commit 3d1fcf8e17a60adbb9f46350850773524ac8511c Parent: c74594dbfaed0f2c213eae8ff0fc8d367e049797 Author: mcol <mcol@posteo.net> Date: 2021-10-03 22:40:25 +0100 Committer: mcol <mcol@posteo.net> Committed: 2021-10-03 22:40:25 +0100 Make file contents available at tree entries
src/Repositories.hs Modified
@@ -122,13 +122,20 @@ data TreeFile = TreeFile { treeFilePath :: TreeFilePath - , treeEntry :: TreeEntry LgRepo + , treeFileContents :: Text } getTree :: CommitOid LgRepo -> ReaderT LgRepo IO [TreeFile] getTree commitID = do entries <- listTreeEntries =<< lookupTree . commitTree =<< lookupCommit commitID - return $ uncurry TreeFile <$> entries + contents <- sequence . fmap (gvalTreeEntry . snd) $ entries + return $ zipWith TreeFile (fmap fst entries) contents + +gvalTreeEntry :: TreeEntry LgRepo -> ReaderT LgRepo IO Text +gvalTreeEntry (BlobEntry oid _) = catBlobUtf8 $ oid +gvalTreeEntry (TreeEntry _) = return "No contents" +gvalTreeEntry (CommitEntry _) = return "No contents" + {- Here we define how commits can be accessed and represented in Ginger templates. @@ -172,6 +179,7 @@ treeAsLookup treefile = \case "path" -> Just . toGVal . treeFilePath $ treefile "href" -> Just . toGVal . flip append ".html" . replace "/" "." . decodeUtf8 . treeFilePath $ treefile + "contents" -> Just . toGVal . treeFileContents $ treefile _ -> Nothing ----------------------------------------------------------------------------------------