module Hakyll.Contrib.Elm (elmMake) where
import qualified Data.ByteString.Char8 as BS
import Data.Monoid
import Hakyll
import System.Directory (getCurrentDirectory)
import System.IO.Temp (withTempFile)
import System.Process (callCommand)
elmMake :: Compiler (Item String)
elmMake =
cached "Hakyll.Contrib.Elm.elmMake" $ do
inputFile <- getResourceFilePath
elmOutput <- unsafeCompiler $ do
dir <- getCurrentDirectory
withTempFile dir "output.js" $ \fp h -> do
let outputFile = "--output=" <> fp
warn = "--warn"
args = unwords [inputFile, warn, outputFile]
cmd = "elm-make" <> " " <> args
putStrLn $ "Running command: " <> cmd
callCommand cmd
fmap BS.unpack $ BS.hGetContents h
makeItem elmOutput