From 301f3940668de194104997e90d2db0ef8ddb8496 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Sun, 8 Nov 2020 23:31:53 +0100 Subject: [PATCH] gemini archive file gen --- Shakefile.hs | 26 ++++++++++++++++++++++++-- engine/org2gemini.sh | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Shakefile.hs b/Shakefile.hs index feaa740..953ce50 100644 --- a/Shakefile.hs +++ b/Shakefile.hs @@ -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 diff --git a/engine/org2gemini.sh b/engine/org2gemini.sh index b8c7911..5d5d2c2 100755 --- a/engine/org2gemini.sh +++ b/engine/org2gemini.sh @@ -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"