From fbe95ce6ce53fee904c62d986897ad3b340429d7 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Wed, 15 Jun 2011 08:53:47 +0200 Subject: Add deploy command --- src/Hakyll/Core/Configuration.hs | 16 ++++++++++++++-- src/Hakyll/Main.hs | 12 +++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'src/Hakyll') diff --git a/src/Hakyll/Core/Configuration.hs b/src/Hakyll/Core/Configuration.hs index 985f5ae..e71d52d 100644 --- a/src/Hakyll/Core/Configuration.hs +++ b/src/Hakyll/Core/Configuration.hs @@ -13,7 +13,7 @@ data HakyllConfiguration = HakyllConfiguration { -- | Directory in which the output written destinationDirectory :: FilePath , -- | Directory where hakyll's internal store is kept - storeDirectory :: FilePath + storeDirectory :: FilePath , -- | Function to determine ignored files -- -- In 'defaultHakyllConfiguration', the following files are ignored: @@ -28,7 +28,18 @@ data HakyllConfiguration = HakyllConfiguration -- also be ignored. Note that this is the configuration parameter, if you -- want to use the test, you should use @shouldIgnoreFile@. -- - ignoreFile :: FilePath -> Bool + ignoreFile :: FilePath -> Bool + , -- | Here, you can plug in a system command to upload/deploy your site. + -- + -- Example: + -- + -- > rsync -ave 'ssh -p 2217' _site jaspervdj@jaspervdj.be:hakyll + -- + -- You can execute this by using + -- + -- > ./hakyll deploy + -- + deployCommand :: String } -- | Default configuration for a hakyll application @@ -38,6 +49,7 @@ defaultHakyllConfiguration = HakyllConfiguration { destinationDirectory = "_site" , storeDirectory = "_cache" , ignoreFile = ignoreFile' + , deployCommand = "echo 'No deploy command specified'" } where ignoreFile' path diff --git a/src/Hakyll/Main.hs b/src/Hakyll/Main.hs index 2513303..ef5c4c8 100644 --- a/src/Hakyll/Main.hs +++ b/src/Hakyll/Main.hs @@ -8,8 +8,9 @@ module Hakyll.Main import Control.Applicative ((<$>)) import Control.Concurrent (forkIO) import Control.Monad (when) -import System.Environment (getProgName, getArgs) import System.Directory (doesDirectoryExist, removeDirectoryRecursive) +import System.Environment (getProgName, getArgs) +import System.Process (system) import qualified Data.Set as S import Hakyll.Core.Configuration @@ -40,6 +41,7 @@ hakyllWith conf rules = do ["rebuild"] -> rebuild conf rules ["server"] -> server conf 8000 ["server", p] -> server conf (read p) + ["deploy"] -> deploy conf _ -> help -- | Build the site @@ -80,6 +82,7 @@ help = do , name ++ " preview [port] Run a server and autocompile" , name ++ " rebuild Clean up and build again" , name ++ " server [port] Run a local test server" + , name ++ " deploy Upload/deploy your site" ] -- | Preview the site @@ -109,3 +112,10 @@ server conf port = do staticServer destination preServeHook port where preServeHook _ = return () + +-- Upload the site +-- +deploy :: HakyllConfiguration -> IO () +deploy conf = do + _ <- system $ deployCommand conf + return () -- cgit v1.2.3