diff options
| author | hallgren <hallgren@chalmers.se> | 2011-12-14 15:28:27 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2011-12-14 15:28:27 +0000 |
| commit | 15678a0fced17d9ed40b8a79985820b15dcc11d8 (patch) | |
| tree | 17cde9c086c3920c702adaa85cd4ccff5626a7dd /src | |
| parent | 02bcfa209872699a3bdb0562c15f74100da4d983 (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')
| -rw-r--r-- | src/compiler/GF.hs | 2 | ||||
| -rw-r--r-- | src/compiler/GF/Infra/Option.hs | 11 | ||||
| -rw-r--r-- | src/compiler/GFI.hs | 4 | ||||
| -rw-r--r-- | src/compiler/GFServer.hs | 3 |
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 = |
