pass index file to gallery/rss
(instead of trying to escape the strings inside in make & on the command line)
This commit is contained in:
parent
161cb48d3a
commit
28fc9db3e0
6 changed files with 63 additions and 67 deletions
|
@ -5,16 +5,18 @@ import Control.Monad
|
|||
import Data.ByteString.Lazy (ByteString)
|
||||
import qualified Data.ByteString.Lazy as ByteString
|
||||
import Data.List (intersperse)
|
||||
import qualified Data.List as List
|
||||
import Data.Text.Lazy (Text)
|
||||
import Data.Text.Lazy.Builder (toLazyText)
|
||||
import qualified Data.Text.Lazy.IO as Text
|
||||
import qualified Data.YAML as YAML
|
||||
import System.FilePath (makeRelative, takeDirectory, takeFileName)
|
||||
import System.FilePath.Find (find, always, fileName, (==?))
|
||||
import System.FilePath.Find (always, fileName, (==?))
|
||||
import qualified System.FilePath.Find as File
|
||||
import System.IO (hPrint, stderr)
|
||||
|
||||
import Depend
|
||||
import Info (IndexInfo (..), Info)
|
||||
import Info hiding (Text)
|
||||
import Options
|
||||
import qualified SinglePage
|
||||
import qualified GalleryPage
|
||||
|
@ -52,10 +54,12 @@ main2 (SinglePage {file, dataDir, nsfw, output}) = do
|
|||
let page = SinglePage.make nsfw dir info
|
||||
writeOutput output page
|
||||
|
||||
main2 (GalleryPage {title, prefix, files, nsfw, output, dataDir}) = do
|
||||
main2 (GalleryPage {files, prefix, index, output, dataDir}) = do
|
||||
ginfo <- galleryFromIndex index prefix
|
||||
printV $ "gallery_info" := ginfo
|
||||
infos <- mapM (infoYAML dataDir) files
|
||||
printV $ "infos" := infos
|
||||
let page = GalleryPage.make title prefix nsfw infos
|
||||
let page = GalleryPage.make ginfo infos
|
||||
writeOutput output page
|
||||
|
||||
main2 (IndexPage {file, output}) = do
|
||||
|
@ -64,11 +68,13 @@ main2 (IndexPage {file, output}) = do
|
|||
let page = IndexPage.make info
|
||||
writeOutput output page
|
||||
|
||||
main2 (RSS {files, title, desc, root, prefix, output, dataDir}) = do
|
||||
main2 (RSS {files, root, index, prefix, output, dataDir}) = do
|
||||
ginfo <- galleryFromIndex index prefix
|
||||
printV $ "gallery_info" := ginfo
|
||||
infos <- mapM (infoYAML dataDir) files
|
||||
printV $ "infos" := infos
|
||||
let output' = takeFileName <$> output
|
||||
let rss = RSS.make root title desc prefix output' infos
|
||||
let rss = RSS.make root ginfo output' infos
|
||||
writeOutput output rss
|
||||
|
||||
main2 (DependSingle {file, nsfw, output, prefix, buildDir, dataDir}) = do
|
||||
|
@ -83,15 +89,15 @@ main2 (DependGallery {file, output, buildDir, dataDir, tmpDir, infoName}) = do
|
|||
IndexInfo {galleries} <- readYAML file
|
||||
printV $ "galleries" := galleries
|
||||
infos <- mapM (infoYAML dataDir) =<< findInfos dataDir infoName
|
||||
printV $ "info files" := infos
|
||||
let dependGallery0 g = dependGallery' g infos buildDir dataDir tmpDir
|
||||
printV $ "info_files" := infos
|
||||
let dependGallery0 g = dependGallery' g file infos buildDir dataDir tmpDir
|
||||
let deps = toLazyText $ mconcat $ intersperse "\n\n\n" $
|
||||
map dependGallery0 galleries
|
||||
writeOutput output deps
|
||||
|
||||
main2 (ListTags {nsfw, listUntagged, dataDir, infoName}) = do
|
||||
infos <- mapM (infoYAML dataDir) =<< findInfos dataDir infoName
|
||||
printV $ "info files" := infos
|
||||
printV $ "info_files" := infos
|
||||
ListTags.run nsfw listUntagged infos
|
||||
|
||||
|
||||
|
@ -104,11 +110,17 @@ infoYAML dataDir f = do
|
|||
pure (f', info)
|
||||
|
||||
findInfos :: FilePath -> FilePath -> IO [FilePath]
|
||||
findInfos dataDir infoName = find always (fileName ==? infoName) dataDir
|
||||
findInfos dataDir infoName = File.find always (fileName ==? infoName) dataDir
|
||||
|
||||
readYAML :: YAML.FromYAML a => FilePath -> IO a
|
||||
readYAML file = ByteString.readFile file >>= decode1Must file
|
||||
|
||||
galleryFromIndex :: FilePath -> FilePath -> IO GalleryInfo
|
||||
galleryFromIndex file prefix = do
|
||||
IndexInfo {galleries} <- readYAML file
|
||||
maybe (fail $ "no gallery with prefix " ++ prefix) pure $
|
||||
List.find (\g -> #prefix g == prefix) galleries
|
||||
|
||||
decode1Must :: YAML.FromYAML a => FilePath -> ByteString -> IO a
|
||||
decode1Must file txt =
|
||||
case YAML.decode1 txt of
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue