1 {-# LANGUAGE OverloadedStrings #-} 2 module Databrary.Web.Coffee 3 ( generateCoffeeJS 4 ) where 5 6 import Control.Monad (mzero) 7 import Control.Monad.IO.Class 8 import System.FilePath (takeDirectory, (<.>)) 9 import System.Process (callProcess) 10 11 import Databrary.Files 12 import Databrary.Web 13 import Databrary.Web.Types 14 import Databrary.Web.Generate 15 16 generateCoffeeJS :: WebGenerator 17 generateCoffeeJS fo@(f, _) = do 18 (b, e) <- liftIO $ splitWebExtensions f 19 if e `elem` [".js", ".js.map"] 20 then do 21 b' <- liftIO $ unRawFilePath $ webFileRel b 22 f' <- liftIO $ unRawFilePath $ webFileAbs f 23 let src = b' <.> ".coffee" 24 -- liftIO $ print src 25 srcRaw <- liftIO $ makeWebFilePath =<< rawFilePath src 26 -- liftIO $ print srcRaw 27 srcAbs <- liftIO $ unRawFilePath $ webFileAbs srcRaw 28 webRegenerate 29 (callProcess "coffee" ["-b", "-c", "-m", "-o", takeDirectory f', srcAbs ]) 30 [] 31 [srcRaw] 32 fo 33 else mzero