@@ -4,6 +4,7 @@ module Main where
4import Control.Monad (msum,guard)
4import Control.Monad (msum,guard)
5import Control.Monad.Trans (MonadIO(liftIO))
5import Control.Monad.Trans (MonadIO(liftIO))
6import Data.List (isPrefixOf, isSuffixOf)
6import Data.List (isPrefixOf, isSuffixOf)
7+import Data.Version (showVersion)
7import Happstack.Server
8import Happstack.Server
8import Happstack.Server.Compression
9import Happstack.Server.Compression
9import System.Directory (makeRelativeToCurrentDirectory)
10import System.Directory (makeRelativeToCurrentDirectory)
@@ -11,11 +12,11 @@ import System.Environment
11import qualified Language.Elm as Elm
12import qualified Language.Elm as Elm
12import Paths_elm_server
13import Paths_elm_server
14−runtime = "/elm-" ++ show version ++ ".js"
15+runtime = "elm-" ++ showVersion version ++ ".js"
16serve :: String -> IO ()
17serve :: String -> IO ()
17serve libLoc = do
18serve libLoc = do
18− putStrLn ("Elm Server "++show version++": running at <http://localhost:8000>")
19+ putStrLn ("Elm Server " ++ showVersion version ++ ": running at <http://localhost:8000>")
19 simpleHTTP nullConf $ do
20 simpleHTTP nullConf $ do
20 _ <- compressedResponseFilter
21 _ <- compressedResponseFilter
21 msum [ uriRest serveElm
22 msum [ uriRest serveElm
@@ -34,7 +35,7 @@ serveElm fp = do
34 ok . toResponse $ Elm.toHtml runtime (pageTitle filePath) content
35 ok . toResponse $ Elm.toHtml runtime (pageTitle filePath) content
36serveLib libLoc fp = do
37serveLib libLoc fp = do
37− guard (fp == runtime)
38+ guard (fp == '/' : runtime)
38 serveFile (asContentType "application/javascript") libLoc
39 serveFile (asContentType "application/javascript") libLoc
40main :: IO ()
41main :: IO ()
@@ -42,7 +43,7 @@ main = getArgs >>= parse
43parse :: [String] -> IO ()
44parse :: [String] -> IO ()
44parse ("--help":_) = putStrLn usage
45parse ("--help":_) = putStrLn usage
45−parse ("--version":_) = putStrLn ("The Elm Server " ++ show version)
46+parse ("--version":_) = putStrLn ("The Elm Server " ++ showVersion version)
46parse [] = serve =<< Elm.runtimeLocation
47parse [] = serve =<< Elm.runtimeLocation
47parse [arg]
48parse [arg]
48 | "--runtime-location=" `isPrefixOf` arg =
49 | "--runtime-location=" `isPrefixOf` arg =