packages feed

ehaskell-0.7: Main.hs

module Main where

import System.Environment (getArgs)
import EHaskell           (mkEhsSrc)
import EHaskellTools      (createEhsDir, copyModuleFile, writeCode, makeExe,
                           runExe, processOptionEhs)
import Data.List.Tools    (dropUntil)
import Control.Applicative((<$>))

main :: IO ()
main = do
--  args  <- getArgs
  (eqs, outfile, infile) <- processOptionEhs <$> getArgs
  let -- infile = head $ filter (notElem '=') args
      defs   = filter (elem '=') eqs
  cont    <- readFile infile
  let (src,mods) = mkEhsSrc (map splitAtEq defs) cont
  mapM_ (copyModuleFile infile) mods
  createEhsDir infile
  writeCode    infile src
  makeExe      infile
  runExe       infile outfile

splitAtEq :: String -> (String, String)
splitAtEq str = (takeWhile (/='=') str, dropUntil (=='=') str)