make less inefficient

- do all filters in one go
- do all post lists in one run of the program
- only write files if they are changed
  (so make repeats less work)
- simplify pandoc command for meta pages
  (this might not actually make a difference)
This commit is contained in:
rhiannon morris 2024-12-03 20:15:36 +01:00
parent 0385c3215b
commit 5a94aae932
13 changed files with 187 additions and 167 deletions

View file

@ -1,12 +1,16 @@
module Misc where
import qualified System.Console.GetOpt as GetOpt
import Control.Monad
import Data.ByteString.Lazy qualified as LazyBS
import Data.Char (isAlphaNum, isAscii, toLower)
import Data.Text (Text)
import Data.Text qualified as Text
import Data.Text.IO qualified as Text
import Data.Time
import System.Console.GetOpt qualified as GetOpt
import System.Directory qualified as Dir
import System.Environment
import System.Exit
import Data.Text (Text)
import Data.Time
import qualified Data.Text as Text
import Data.Char (isAlphaNum, isAscii, toLower)
import Text.Pandoc.Definition
-- | exception on 'Left'
@ -97,3 +101,15 @@ rssDate (ID d) =
showDate :: IsoDate -> Text
showDate (ID d) =
Text.pack $ toLower <$> formatTime defaultTimeLocale "%a %-d %B %Y" d
writeIfDifferentBS :: FilePath -> LazyBS.ByteString -> IO ()
writeIfDifferentBS fn content = do
exists <- Dir.doesFileExist fn
old <- if exists then Just <$> LazyBS.readFile fn else pure Nothing
unless (old == Just content) $ LazyBS.writeFile fn content
writeIfDifferentT :: FilePath -> Text -> IO ()
writeIfDifferentT fn content = do
exists <- Dir.doesFileExist fn
old <- if exists then Just <$> Text.readFile fn else pure Nothing
unless (old == Just content) $ Text.writeFile fn content