elm-server 0.9 → 0.9.0.1
raw patch · 2 files changed
+14/−4 lines, 2 files
Files
- Server.hs +13/−3
- elm-server.cabal +1/−1
Server.hs view
@@ -9,8 +9,10 @@ import Happstack.Server.Compression import System.Directory import System.Environment+import System.Exit import System.FilePath import System.Process+import GHC.IO.Handle import qualified Language.Elm as Elm import Paths_elm_server @@ -36,10 +38,18 @@ serveElm fp = do guard (takeExtension fp == ".elm") let file = tail fp- liftIO $ rawSystem "elm" [ "--make" ,"--runtime=" ++ runtime- , "--cache-dir=elm-server-cache", file ]+ args = [ "--make" ,"--runtime=" ++ runtime, "--cache-dir=elm-server-cache", file ]+ (_, stdout, _, handle) <- liftIO $ createProcess $ (proc "elm" args) { std_out = CreatePipe }+ exitCode <- liftIO $ waitForProcess handle liftIO $ removeDirectoryRecursive "elm-server-cache"- serveFile (asContentType "text/html") ("build" </> replaceExtension file "html")+ case (exitCode, stdout) of+ (ExitFailure _, Just out) ->+ do str <- liftIO $ hGetContents out+ badRequest $ toResponse str+ (ExitFailure _, Nothing) ->+ badRequest $ toResponse "See command line for error message."+ (ExitSuccess, _) ->+ serveFile (asContentType "text/html") ("build" </> replaceExtension file "html") serveLib :: FilePath -> [Char] -> ServerPartT IO Response serveLib libLoc fp = do
elm-server.cabal view
@@ -1,5 +1,5 @@ Name: elm-server-Version: 0.9+Version: 0.9.0.1 Synopsis: The Elm language server. Description: This package provides a standalone, Happstack-based Elm server.