summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2011-12-14 15:28:27 +0000
committerhallgren <hallgren@chalmers.se>2011-12-14 15:28:27 +0000
commit15678a0fced17d9ed40b8a79985820b15dcc11d8 (patch)
tree17cde9c086c3920c702adaa85cd4ccff5626a7dd /src/compiler
parent02bcfa209872699a3bdb0562c15f74100da4d983 (diff)
gf -server[=port]
You can now specify which port the HTTP server should run on in server mode. The default is 41296.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/GF.hs2
-rw-r--r--src/compiler/GF/Infra/Option.hs11
-rw-r--r--src/compiler/GFI.hs4
-rw-r--r--src/compiler/GFServer.hs3
4 files changed, 13 insertions, 7 deletions
diff --git a/src/compiler/GF.hs b/src/compiler/GF.hs
index ba5082fc8..052e02c88 100644
--- a/src/compiler/GF.hs
+++ b/src/compiler/GF.hs
@@ -45,5 +45,5 @@ mainOpts opts files =
ModeHelp -> putStrLn helpMessage
ModeInteractive -> mainGFI opts files
ModeRun -> mainRunGFI opts files
- ModeServer -> mainServerGFI opts files
+ ModeServer port -> mainServerGFI opts port files
ModeCompiler -> mainGFC opts files
diff --git a/src/compiler/GF/Infra/Option.hs b/src/compiler/GF/Infra/Option.hs
index 74020f03b..85088cba3 100644
--- a/src/compiler/GF/Infra/Option.hs
+++ b/src/compiler/GF/Infra/Option.hs
@@ -74,7 +74,7 @@ errors = fail . unlines
-- Types
data Mode = ModeVersion | ModeHelp | ModeInteractive | ModeRun | ModeCompiler
- | ModeServer
+ | ModeServer Int{-port-}
deriving (Show,Eq,Ord)
data Verbosity = Quiet | Normal | Verbose | Debug
@@ -286,7 +286,8 @@ optDescr =
Option [] ["batch"] (NoArg (mode ModeCompiler)) "Run in batch compiler mode.",
Option [] ["interactive"] (NoArg (mode ModeInteractive)) "Run in interactive mode (default).",
Option [] ["run"] (NoArg (mode ModeRun)) "Run in interactive mode, showing output only (no other messages).",
- Option [] ["server"] (NoArg (mode ModeServer)) "Run in HTTP server mode.",
+ Option [] ["server"] (OptArg modeServer "port") $
+ "Run in HTTP server mode on given port (default "++show defaultPort++").",
Option [] ["tags"] (NoArg (set $ \o -> o{optMode = ModeCompiler, optTagsOnly = True})) "Build TAGS file and exit.",
Option ['E'] [] (NoArg (phase Preproc)) "Stop after preprocessing (with --preproc).",
Option ['C'] [] (NoArg (phase Convert)) "Stop after conversion to .gf.",
@@ -361,6 +362,12 @@ optDescr =
]
where phase x = set $ \o -> o { optStopAfterPhase = x }
mode x = set $ \o -> o { optMode = x }
+ defaultPort = 41296
+ modeServer = maybe (ms defaultPort) readPort
+ where
+ ms = mode . ModeServer
+ readPort p = maybe err ms (readMaybe p)
+ where err = fail $ "Bad server port: "++p
verbosity mv = case mv of
Nothing -> set $ \o -> o { optVerbosity = Verbose }
Just v -> case readMaybe v >>= toEnumBounded of
diff --git a/src/compiler/GFI.hs b/src/compiler/GFI.hs
index 5b807eb7a..3fd751739 100644
--- a/src/compiler/GFI.hs
+++ b/src/compiler/GFI.hs
@@ -69,8 +69,8 @@ mainGFI opts files = do
shell opts files = loop opts =<< importInEnv emptyGFEnv opts files
#ifdef SERVER_MODE
-mainServerGFI opts0 files =
- server (execute1 opts) =<< importInEnv emptyGFEnv opts files
+mainServerGFI opts0 port files =
+ server port (execute1 opts) =<< importInEnv emptyGFEnv opts files
where opts = beQuiet opts0
#else
mainServerGFI opts files =
diff --git a/src/compiler/GFServer.hs b/src/compiler/GFServer.hs
index 2c98a0c32..b19b92512 100644
--- a/src/compiler/GFServer.hs
+++ b/src/compiler/GFServer.hs
@@ -40,7 +40,7 @@ import RunHTTP(cgiHandler)
debug s = liftIO (logPutStrLn s)
-- | Combined FastCGI and HTTP server
-server execute1 state0 =
+server port execute1 state0 =
do --stderrToFile logFile
state <- newMVar M.empty
cache <- PS.newPGFCache
@@ -61,7 +61,6 @@ server execute1 state0 =
++show port++"/ in your web browser."
initServer port (modifyMVar state . handle state0 cache execute1)
- port = 41296
{-
-- | FastCGI request handler
handle_fcgi execute1 state0 stateM cache =