From f51ea184bbd107edb2af12043a8173ec9ba11348 Mon Sep 17 00:00:00 2001 From: Rhiannon Morris Date: Thu, 11 Aug 2022 01:54:12 +0200 Subject: [PATCH] Use the site name in opengraph tags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …which involves passing around the index file to a lot more places --- Makefile | 20 ++++++++++++-------- make-pages/Depend.hs | 21 ++++++++++++--------- make-pages/Main.hs | 9 +++++---- make-pages/Options.hs | 13 ++++++++----- make-pages/SinglePage.hs | 13 ++++++++----- 5 files changed, 45 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 66e4f30..43d24bb 100644 --- a/Makefile +++ b/Makefile @@ -147,17 +147,19 @@ endef # args: # 1. gallery prefix -# 2. build dir -# 3. data dir -# 4. other flags +# 2. index filename +# 3. build dir +# 4. data dir +# 5. other flags define depend-single echo "[deps] "$@ mkdir -p "$(dir $@)" -$(MAKEPAGES) $(MPFLAGS) depend-single $(4) \ +$(MAKEPAGES) $(MPFLAGS) depend-single $(5) \ --output "$@" \ --prefix "$(1)" \ - --build-dir "$(2)" \ - --data-dir "$(3)" $< + --index "$(2)" \ + --build-dir "$(3)" \ + --data-dir "$(4)" $< endef # args @@ -178,14 +180,16 @@ endef # args: # 1. data dir # 2. gallery prefix -# 3. other flags +# 3. index file +# 4. other flags define single echo "[single] "$@ mkdir -p "$(dir $@)" -$(MAKEPAGES) $(MPFLAGS) single $(3) \ +$(MAKEPAGES) $(MPFLAGS) single $(4) \ --root $(ROOT) \ --data-dir "$(1)" \ --prefix "$(2)" \ + --index "$(3)" \ --output "$@" \ $< endef diff --git a/make-pages/Depend.hs b/make-pages/Depend.hs index 113b02b..534f91d 100644 --- a/make-pages/Depend.hs +++ b/make-pages/Depend.hs @@ -13,17 +13,19 @@ import System.FilePath dependSingle :: FilePath -- ^ yaml file name (relative to data dir!) + -> FilePath -- ^ index file name -> Info -> FilePath -- ^ output prefix -> FilePath -- ^ build dir -> Bool -- ^ include nsfw? -> Text -dependSingle yamlDir info prefix build nsfw = - toLazyText $ dependSingle' yamlDir info prefix build nsfw +dependSingle yamlDir indexFile info prefix build nsfw = + toLazyText $ dependSingle' yamlDir indexFile info prefix build nsfw -dependSingle' :: FilePath -> Info -> FilePath -> FilePath -> Bool -> Builder -dependSingle' yamlDir info prefix build nsfw = - [b|$page: $deps $$(MAKEPAGES)|] +dependSingle' :: FilePath -> FilePath -> Info -> FilePath -> FilePath -> Bool + -> Builder +dependSingle' yamlDir indexFile info prefix build nsfw = + [b|$page: $deps $indexFile $$(MAKEPAGES)|] where images = #all if nsfw then #images info else #sfwImages info @@ -79,24 +81,25 @@ dependGallery' (GalleryInfo {prefix, filters}) gallery = build prefix "index.html" rss = build prefix "rss.xml" - rules = makeRules prefix filters build data_ tmp + rules = makeRules prefix indexFile filters build data_ tmp inc d = tmp prefix takeDirectory d <.> "mk" incFiles = unwords $ map inc files incs = if null infos then "" else [b|include $incFiles|] makeRules :: FilePath -- ^ prefix + -> FilePath -- ^ index file -> GalleryFilters -> FilePath -- ^ build dir -> FilePath -- ^ data dir -> FilePath -- ^ tmp dir -> Builder -makeRules prefix filters build data_ tmp = [b|@0 +makeRules prefix indexFile filters build data_ tmp = [b|@0 $buildPrefix/%/index.html: $data_/%/info.yaml $$(MAKEPAGES) - $$(call single,$data_,$prefix,$flags) + $$(call single,$data_,$prefix,$indexFile,$flags) $tmpPrefix/%.mk: $data_/%/info.yaml $$(MAKEPAGES) - $$(call depend-single,$prefix,$build,$data_,$flags) + $$(call depend-single,$prefix,$indexFile,$build,$data_,$flags) $buildPrefix/%: $tmp/% $$(call copy,-l) diff --git a/make-pages/Main.hs b/make-pages/Main.hs index 9afed5f..b268041 100644 --- a/make-pages/Main.hs +++ b/make-pages/Main.hs @@ -47,11 +47,12 @@ main = do main2 mode main2 :: HasVerbose => ModeOptions -> IO () -main2 (SinglePage {root, file, prefix, dataDir, nsfw, output}) = do +main2 (SinglePage {root, file, prefix, index, dataDir, nsfw, output}) = do + siteName <- #title <$> readYAML @IndexInfo index info <- readYAML file printV $ "contents" := info let dir = takeDirectory $ makeRelative dataDir file - page <- SinglePage.make root prefix nsfw dataDir dir info + page <- SinglePage.make root siteName prefix nsfw dataDir dir info writeOutput output page main2 (GalleryPage {root, files, prefix, index, output, dataDir}) = do @@ -77,12 +78,12 @@ main2 (RSS {files, root, index, prefix, output, dataDir}) = do let rss = RSS.make root ginfo output' infos writeOutput output rss -main2 (DependSingle {file, nsfw, output, prefix, buildDir, dataDir}) = do +main2 (DependSingle {index, file, nsfw, output, prefix, buildDir, dataDir}) = do info <- readYAML file printV $ "contents" := info let dir = takeDirectory $ makeRelative dataDir file printV $ "dir" := dir - let deps = dependSingle dir info prefix buildDir nsfw + let deps = dependSingle dir index info prefix buildDir nsfw writeOutput output deps main2 (DependGallery {file, output, buildDir, dataDir, tmpDir, infoName}) = do diff --git a/make-pages/Options.hs b/make-pages/Options.hs index 3f59034..3b702e5 100644 --- a/make-pages/Options.hs +++ b/make-pages/Options.hs @@ -15,6 +15,7 @@ data ModeOptions = root :: Text, file :: FilePath, prefix :: FilePath, + index :: FilePath, dataDir :: FilePath, nsfw :: Bool, output :: Maybe FilePath @@ -45,6 +46,7 @@ data ModeOptions = nsfw :: Bool, output :: Maybe FilePath, prefix :: FilePath, + index :: FilePath, buildDir :: FilePath, dataDir :: FilePath } @@ -80,7 +82,8 @@ optionsParser = globalOpts `info` mainInfo where single = command "single" $ singleOpts `info` singleInfo singleOpts = - SinglePage <$> root <*> file <*> prefix <*> dataDir <*> nsfwS <*> output + SinglePage <$> root <*> file <*> prefix <*> indexFile + <*> dataDir <*> nsfwS <*> output root = strOption $ short 'R' <> long "root" <> metavar "URL" <> help "website root (no trailing slash)" @@ -90,6 +93,9 @@ optionsParser = globalOpts `info` mainInfo where short 'p' <> long "prefix" <> metavar "DIR" <> value "" <> help "gallery directory prefix" + indexFile = strOption $ + short 'i' <> long "index" <> metavar "FILE" <> + help "path to index file" nsfwS = switch $ short 'n' <> long "nsfw" <> help "include nsfw versions" @@ -107,9 +113,6 @@ optionsParser = globalOpts `info` mainInfo where galleryOpts = GalleryPage <$> root <*> files <*> prefix <*> indexFile <*> output <*> dataDir - indexFile = strOption $ - short 'i' <> long "index" <> metavar "FILE" <> - help "path to index file" files = many $ strArgument $ metavar "FILE..." <> help "yaml files to read" galleryInfo = progDesc "generate a gallery page" @@ -122,7 +125,7 @@ optionsParser = globalOpts `info` mainInfo where dependSingle = command "depend-single" $ dsOpts `info` dsInfo dsOpts = DependSingle <$> file <*> nsfwS <*> output <*> prefix - <*> buildDir <*> dataDir + <*> indexFile <*> buildDir <*> dataDir buildDir = strOption $ short 'B' <> long "build-dir" <> metavar "DIR" <> value "_build" <> help "build directory (default: _build)" diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index f1b73eb..475df8d 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -28,16 +28,19 @@ instance Show NoEligibleImages where make :: Text -- ^ website root + -> Text -- ^ website name -> FilePath -- ^ gallery prefix -> Bool -- ^ nsfw? -> FilePath -- ^ data dir -> FilePath -- ^ subdir of datadir containing this @info.yaml@ -> Info -> IO Lazy.Text -make root prefix nsfw dataDir dir info = - toLazyText <$> make' root prefix nsfw dataDir dir info +make root siteName prefix nsfw dataDir dir info = + toLazyText <$> make' root siteName prefix nsfw dataDir dir info -make' :: Text -> FilePath -> Bool -> FilePath -> FilePath -> Info -> IO Builder -make' root prefix nsfw _dataDir dir info@(Info {date, title, artist, bg}) = do +make' :: Text -> Text -> FilePath -> Bool -> FilePath -> FilePath -> Info + -> IO Builder +make' root siteName prefix nsfw _dataDir dir + info@(Info {date, title, artist, bg}) = do let images = imagesFor nsfw info let undir = joinPath (replicate (length (splitPath dir)) "..") @@ -104,7 +107,7 @@ make' root prefix nsfw _dataDir dir info@(Info {date, title, artist, bg}) = do - +