🐙 Templated web page generator for your git repositories
git clone https://github.com/m-col/gitja
Files | Refs | Readme | License

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
 
 ----------------------------------------------------------------------------------------