on 9567950 help sign in
elk/Build.hs
37 lines 1.0 kB history raw
1-- This file compiles all Elm code then concatenates all JS code
2-- into elm-runtime.js. Use the following command to run it:
3--
4-- runHaskell Build.hs
5--
7import System.Cmd
8import System.Directory
9import System.FilePath
10import System.IO
11import Language.Elm
13getFiles ext dir = do
14 contents <- map (dir </>) `fmap` getDirectoryContents dir
15 let files = filter (\f -> takeExtension f == ext) contents
16 dirs = filter (not . hasExtension) contents
17 filess <- mapM (getFiles ext) dirs
18 return (files ++ concat filess)
20appendJS file = do
21 putStrLn (dropExtension file)
22 str <- readFile file
23 length str `seq` return ()
24 appendFile "elm-runtime.js" str
26appendElm file = do
27 system ("elm --only-js " ++ file)
28 let jsFile = replaceExtension file ".js"
29 appendJS jsFile
30 removeFile jsFile
32main = do
33 writeFile "elm-runtime.js" "Elm = {}; Elm.Native = {};\n"
34 mapM_ appendJS =<< getFiles ".js" "libraries"
35 mapM_ appendElm =<< getFiles ".elm" "libraries"
36 mapM_ appendJS =<< getFiles ".js" "runtime"