gemini archive file gen
This commit is contained in:
parent
a394cb0165
commit
301f394066
26
Shakefile.hs
26
Shakefile.hs
|
@ -158,7 +158,10 @@ buildRules = do
|
||||||
if fileExists
|
if fileExists
|
||||||
then copyFileChanged (srcDir </> asset) out
|
then copyFileChanged (srcDir </> asset) out
|
||||||
else genAsciiAction getPost 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
|
".jpg" -> compressImage asset
|
||||||
".jpeg" -> compressImage asset
|
".jpeg" -> compressImage asset
|
||||||
".gif" -> compressImage asset
|
".gif" -> compressImage asset
|
||||||
|
@ -197,6 +200,25 @@ buildArchive getPosts getTemplate out = do
|
||||||
]
|
]
|
||||||
writeFile' out (toS htmlContent)
|
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 :: BlogPost -> Text
|
||||||
postInfo bp =
|
postInfo bp =
|
||||||
"| " <> date <> " | " <> orglink <> " |"
|
"| " <> date <> " | " <> orglink <> " |"
|
||||||
|
@ -390,7 +412,7 @@ allGeminiAction :: Action ()
|
||||||
allGeminiAction = do
|
allGeminiAction = do
|
||||||
allOrgFiles <- getDirectoryFiles srcDir ["//*.org"]
|
allOrgFiles <- getDirectoryFiles srcDir ["//*.org"]
|
||||||
let allGeminiFiles = map (("gemini" </>) . (-<.> "gmi")) allOrgFiles
|
let allGeminiFiles = map (("gemini" </>) . (-<.> "gmi")) allOrgFiles
|
||||||
need (map build allGeminiFiles)
|
need (map build $ allGeminiFiles <> ["gemini" </> "archive.gmi"])
|
||||||
|
|
||||||
compressImage :: FilePath -> Action ()
|
compressImage :: FilePath -> Action ()
|
||||||
compressImage img = do
|
compressImage img = do
|
||||||
|
|
|
@ -5,4 +5,4 @@ cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||||
src="$1"
|
src="$1"
|
||||||
dst="$2"
|
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"
|
||||||
|
|
Loading…
Reference in a new issue