{-# OPTIONS_GHC -fglasgow-exts #-}

module Pugs.CodeGen.Binary (genBinary) where
import Pugs.Internals
import Pugs.AST
import Pugs.Compile
import Pugs.PIL1
import DrIFT.Binary
import System.IO
import System.Directory

genBinary :: Eval Val
genBinary = do
    penv <- compile () :: Eval PIL_Environment
    io $ do
        tmp         <- getTemporaryDirectory
        (file, fh)  <- openBinaryTempFile tmp "pugs.bin"
        bh          <- openBinIO fh
        put_ bh penv
        hClose fh
        return $ VStr (unlines [file])
