aboutsummaryrefslogtreecommitdiff
path: root/reploy.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2023-10-13 20:45:36 +0200
committerMirek Kratochvil <exa.exa@gmail.com>2023-10-13 20:45:36 +0200
commit5304dd384c12280ba5e920905cc84e877f2df8d2 (patch)
treebcf3cb5f48d464e6145fcc6f1b3c5710db6e896a /reploy.hs
parent4cdbf598c0e343384f8af3421d332ed15d8afe4e (diff)
downloadreploy-5304dd384c12280ba5e920905cc84e877f2df8d2.tar.gz
reploy-5304dd384c12280ba5e920905cc84e877f2df8d2.tar.bz2
generalize the options a bit, allow assets from multiple directories
Diffstat (limited to 'reploy.hs')
-rw-r--r--reploy.hs21
1 files changed, 12 insertions, 9 deletions
diff --git a/reploy.hs b/reploy.hs
index ca1b663..3a7e6a8 100644
--- a/reploy.hs
+++ b/reploy.hs
@@ -18,7 +18,7 @@
-- | The main site deployment executable.
module Main where
-import Control.Monad ((>=>), filterM, join, unless, when)
+import Control.Monad (filterM, join, unless, when)
import Control.Monad.Extra (ifM, whenM)
import Control.Monad.Trans.State.Lazy
import qualified Data.Aeson as AE
@@ -333,22 +333,25 @@ installFile fp = do
copy fp file
pure loc
--- | Simply copy a strictly named asset.
-installAsset :: FilePath -> Site ()
-installAsset fp = do
+-- | Simply copy an explicitly named asset in the given asset dir
+installAsset :: FilePath -> FilePath -> Site ()
+installAsset ad fp = do
od <- use outputDir
- ad <- use assetDir
let [src, dst] = map (</> fp) [ad, od]
checkTarget dst
io $ do
putStrLn $ "A -> " ++ src ++ " -> " ++ dst
copy src dst
--- | Copy all files from asset directory.
+-- | Copy all files from a given asset directory.
+installAssetDir :: FilePath -> Site ()
+installAssetDir ad =
+ io (getRecursiveContents (pure . const False) ad) >>=
+ traverse_ (installAsset ad)
+
+-- | Copy all files from the asset directories.
installAssets :: Site ()
-installAssets =
- use assetDir >>=
- (io . getRecursiveContents (pure . const False) >=> traverse_ installAsset)
+installAssets = use assetdirs >>= traverse installAssetDir
-- | Load tag names from a directory and add them to `tagNames`.
sourceTagnames :: FilePath -> Site ()