module Shaker.Action.Standard
where
import Control.Concurrent
import Control.Monad.Reader
import qualified Data.Map as M
import Shaker.Type
import System.Directory
runHelp :: Plugin
runHelp = do
commands <- asks shakerCommandMap
lift $ do
putStrLn "Following actions are available : "
print $ M.keys commands
putStrLn "use ~[actionName] for continuous launch"
runExit :: Plugin
runExit = do
lift $ putStrLn "Exiting"
quit_token <- asks (threadDataQuitToken . shakerThreadData)
lift $ putMVar quit_token 42
runStartAction :: Plugin
runStartAction = lift $
putStrLn "-- Begin action --"
runEmpty :: Plugin
runEmpty = return ()
runEndAction :: Plugin
runEndAction = lift $
putStrLn "-- End action --"
runClean :: Plugin
runClean = do
toClean <- asks $ map compileInputBuildDirectory . shakerCompileInputs
lift$ mapM_ action toClean
where action toClean = do
ex <- doesDirectoryExist toClean
when ex $ removeDirectoryRecursive toClean
runInvalidAction :: Plugin
runInvalidAction = lift $ putStrLn "Invalid action, use help to display available actions"