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
-
+