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