39 lines
1.1 KiB
Haskell
39 lines
1.1 KiB
Haskell
-- This file compiles all library and runtime code
|
|
-- into elm-runtime.js. Use the following command to run it:
|
|
--
|
|
-- runHaskell Build.hs
|
|
--
|
|
-- Note: This does NOT compile the compiler! Run `cabal install`
|
|
-- from the compiler/ directory to do that.
|
|
|
|
import System.Cmd
|
|
import System.Directory
|
|
import System.FilePath
|
|
import System.IO
|
|
import Language.Elm
|
|
|
|
getFiles ext dir = do
|
|
contents <- map (dir </>) `fmap` getDirectoryContents dir
|
|
let files = filter (\f -> takeExtension f == ext) contents
|
|
dirs = filter (not . hasExtension) contents
|
|
filess <- mapM (getFiles ext) dirs
|
|
return (files ++ concat filess)
|
|
|
|
appendJS file = do
|
|
putStrLn (dropExtension file)
|
|
str <- readFile file
|
|
length str `seq` return ()
|
|
appendFile "elm-runtime.js" str
|
|
|
|
appendElm file = do
|
|
system ("elm --only-js " ++ file)
|
|
let jsFile = replaceExtension file ".js"
|
|
appendJS jsFile
|
|
removeFile jsFile
|
|
|
|
main = do
|
|
writeFile "elm-runtime.js" "Elm = {}; Elm.Native = {};\n"
|
|
mapM_ appendJS =<< getFiles ".js" "libraries"
|
|
mapM_ appendElm =<< getFiles ".elm" "libraries"
|
|
mapM_ appendJS =<< getFiles ".js" "runtime"
|
|
|