gemini archive file gen

This commit is contained in:
Yann Esposito (Yogsototh) 2020-11-08 23:31:53 +01:00
parent a394cb0165
commit 301f394066
Signed by untrusted user who does not match committer: yogsototh
GPG Key ID: 7B19A4C650D59646
2 changed files with 25 additions and 3 deletions

View File

@ -158,7 +158,10 @@ buildRules = do
if fileExists
then copyFileChanged (srcDir </> asset) out
else genAsciiAction getPost out
".gmi" -> genGeminiAction getPost out
".gmi" ->
if out == siteDir </> "gemini" </> "archive.gmi"
then buildGeminiArchive getPosts out
else genGeminiAction getPost out
".jpg" -> compressImage asset
".jpeg" -> compressImage asset
".gif" -> compressImage asset
@ -197,6 +200,25 @@ buildArchive getPosts getTemplate out = do
]
writeFile' out (toS htmlContent)
buildGeminiArchive
:: (() -> Action [BlogPost])
-> [Char] -> Action ()
buildGeminiArchive getPosts out = do
posts <- fmap sortByPostDate $ getPosts ()
need $ map postSrc posts
let
title :: Text
title = "# Posts"
articleList = toS $ T.intercalate "\n" $ map postGeminiInfo posts
fileContent = title <> "\n\n" <> articleList
writeFile' out (toS fileContent)
postGeminiInfo :: BlogPost -> Text
postGeminiInfo bp =
"=> " <> (toS (postUrl bp -<.> ".gmi")) <> " " <> date <> ": " <> (postTitle bp)
where
date = T.takeWhile (/= ' ') (postDate bp)
postInfo :: BlogPost -> Text
postInfo bp =
"| " <> date <> " | " <> orglink <> " |"
@ -390,7 +412,7 @@ allGeminiAction :: Action ()
allGeminiAction = do
allOrgFiles <- getDirectoryFiles srcDir ["//*.org"]
let allGeminiFiles = map (("gemini" </>) . (-<.> "gmi")) allOrgFiles
need (map build allGeminiFiles)
need (map build $ allGeminiFiles <> ["gemini" </> "archive.gmi"])
compressImage :: FilePath -> Action ()
compressImage img = do

View File

@ -5,4 +5,4 @@ cd "$(git rev-parse --show-toplevel)" || exit 1
src="$1"
dst="$2"
./engine/org2gemini_step1.sh "$src" | perl -pe 's#\[\[([^]]*)\]\[([^]]*)\]\]#\n=> $1 $2#g;s#^\* *$##;s#=> file:#=> #g' > "$dst"
./engine/org2gemini_step1.sh "$src" | perl -pe 's#\[\[([^]]*)\]\[([^]]*)\]\]#\n=> $1 $2#g;s#^\* *$##;s#=> file:([^ ]*)\.org#=> $1.gmi#g' > "$dst"