on 4af4585 help sign in
elk/Build.hs
41 lines 1.2 kB history raw
1-- This file compiles all library and runtime code
2-- into elm-runtime.js. Run it with following command:
3--
4-- runHaskell Build.hs
5--
6-- Note: This does NOT compile the compiler! Run `cabal install`
7-- from the compiler/ directory to do that.
9import System.Cmd
10import System.Directory
11import System.Exit
12import System.FilePath
13import System.IO
14import Language.Elm
16getFiles ext dir = do
17 contents <- map (dir </>) `fmap` getDirectoryContents dir
18 let files = filter (\f -> takeExtension f == ext) contents
19 dirs = filter (not . hasExtension) contents
20 filess <- mapM (getFiles ext) dirs
21 return (files ++ concat filess)
23appendJS file = do
24 putStrLn (dropExtension file)
25 str <- readFile file
26 length str `seq` return ()
27 appendFile "elm-runtime.js" str
29appendElm file = do
30 system ("elm --only-js " ++ file)
31 let jsFile = replaceExtension file ".js"
32 appendJS jsFile
33 removeFile jsFile
35main = do
36 writeFile "elm-runtime.js" "Elm = {}; Elm.Native = {}; Elm.Native.Graphics = {}; Elm.Graphics = {};\n"
37 mapM_ appendJS =<< getFiles ".js" "libraries"
38 mapM_ appendElm =<< getFiles ".elm" "libraries"
39 mapM_ appendJS =<< getFiles ".js" "runtime"
40 putStrLn "Success building runtime and libraries!"
41 exitSuccess