aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMirek Kratochvil <miroslav.kratochvil@uni.lu>2023-06-22 11:34:00 +0200
committerMirek Kratochvil <miroslav.kratochvil@uni.lu>2023-06-22 11:43:28 +0200
commitfa7d1fab5550822b1f4cad753f122515a818a600 (patch)
tree9931d559ffa3368263c00afbc76c40db6323e0ed
parent91900a323ca89592c200e55dc8afc65c8a9abe3a (diff)
downloadreploy-fa7d1fab5550822b1f4cad753f122515a818a600.tar.gz
reploy-fa7d1fab5550822b1f4cad753f122515a818a600.tar.bz2
avoid overwriting timestamps if they are forced by markdown already
-rw-r--r--Types.hs3
-rw-r--r--cards/404.md2
-rw-r--r--cards/index.md1
-rw-r--r--cards/search.md1
-rw-r--r--site.hs20
5 files changed, 17 insertions, 10 deletions
diff --git a/Types.hs b/Types.hs
index 455a4f4..7f09b05 100644
--- a/Types.hs
+++ b/Types.hs
@@ -132,7 +132,8 @@ siteOptions' = do
_timestampSuffix <-
strOption $
long "timestamp-prefix" <>
- help "Timestamp file suffix for markdowns" <> value ".timestamp" <> showDefault
+ help "Timestamp file suffix for markdowns" <>
+ value ".timestamp" <> showDefault
_dumpFinalState <-
switch $
long "dump-state" <>
diff --git a/cards/404.md b/cards/404.md
index 60148b7..a0e09ea 100644
--- a/cards/404.md
+++ b/cards/404.md
@@ -2,6 +2,8 @@
mount: /404
title: Page not found
search: off
+toc: off
+timestamp: null
---
# Page not found!
diff --git a/cards/index.md b/cards/index.md
index b493711..fb19e6e 100644
--- a/cards/index.md
+++ b/cards/index.md
@@ -3,6 +3,7 @@ mount: /
title: Home
template: index.html
toc: off
+timestamp: null
---
#### What are How-To Cards?
diff --git a/cards/search.md b/cards/search.md
index cefd3eb..42713f0 100644
--- a/cards/search.md
+++ b/cards/search.md
@@ -4,6 +4,7 @@ title: Search
template: search.html
search: off
toc: off
+timestamp: null
---
# Search
diff --git a/site.hs b/site.hs
index 7989dff..d60486e 100644
--- a/site.hs
+++ b/site.hs
@@ -182,15 +182,17 @@ timestampFile fp = do
-- | If a timestamp file for the page exists, add the timestamp metadata.
addTimeMeta :: PageInfo -> Y.Value -> Site Y.Value
-addTimeMeta pi m'@(Y.Object m) = do
- tspath <- timestampFile $ pi ^. pagePath
- io $
- ifM
- (doesFileExist tspath)
- (do putStrLn $ "timestamp <- " ++ tspath
- ts <- Y.String <$> TIO.readFile tspath
- pure . Y.Object $ KM.insert "timestamp" ts m)
- (pure m')
+addTimeMeta pi m'@(Y.Object m)
+ | "timestamp" `KM.member` m = pure m' -- do not overwrite the timestamp if present
+ | otherwise = do
+ tspath <- timestampFile $ pi ^. pagePath
+ io $
+ ifM
+ (doesFileExist tspath)
+ (do putStrLn $ "timestamp <- " ++ tspath
+ ts <- Y.String <$> TIO.readFile tspath
+ pure . Y.Object $ KM.insert "timestamp" ts m)
+ (pure m')
-- | Add page-specific information to the metadata. In this instance, this just
-- expands the tags for rendering. Eventually would be nice to have the timestamps