web: exit if an instance is already running (#226)
Also - pause for 0.1s before opening the browser, to ensure the app is ready - don't open a browser if the app fails to start - terminate the server thread more carefully on exit, may resolve some lingering background thread issues eg on windows
This commit is contained in:
parent
e2126fe480
commit
df1040014e
@ -16,8 +16,8 @@ import Yesod.Default.Config --(fromArgs)
|
||||
import Settings -- (parseExtra)
|
||||
import Application (makeApplication)
|
||||
import Data.String
|
||||
import Network.Wai.Handler.Warp (runSettings, defaultSettings, setPort)
|
||||
import Network.Wai.Handler.Launch (runUrlPort)
|
||||
import Network.Wai.Handler.Warp (runSettings, defaultSettings, setHost, setPort)
|
||||
import Network.Wai.Handler.Launch (runHostPortUrl)
|
||||
--
|
||||
#if !MIN_VERSION_base(4,8,0)
|
||||
import Control.Applicative ((<$>))
|
||||
@ -70,23 +70,30 @@ web :: WebOpts -> Journal -> IO ()
|
||||
web opts j = do
|
||||
d <- getCurrentDay
|
||||
let j' = filterJournalTransactions (queryFromOpts d $ reportopts_ $ cliopts_ opts) j
|
||||
h = "127.0.0.1"
|
||||
p = port_ opts
|
||||
u = base_url_ opts
|
||||
staticRoot = pack <$> file_url_ opts
|
||||
_ <- printf "Starting web app on port %d with base url %s\n" p u
|
||||
app <- makeApplication opts j' AppConfig{appEnv = Development
|
||||
,appPort = p
|
||||
,appRoot = pack u
|
||||
,appHost = fromString "*4"
|
||||
,appExtra = Extra "" Nothing staticRoot
|
||||
}
|
||||
appconfig = AppConfig{appEnv = Development
|
||||
,appHost = fromString h
|
||||
,appPort = p
|
||||
,appRoot = pack u
|
||||
,appExtra = Extra "" Nothing staticRoot
|
||||
}
|
||||
app <- makeApplication opts j' appconfig
|
||||
_ <- printf "Starting web app on host %s port %d with base url %s\n" h p u
|
||||
if server_ opts
|
||||
then do
|
||||
putStrLn "Press ctrl-c to quit"
|
||||
hFlush stdout
|
||||
Network.Wai.Handler.Warp.runSettings (setPort p defaultSettings) app
|
||||
else do
|
||||
putStrLn "Starting web browser if possible"
|
||||
putStrLn "Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)"
|
||||
hFlush stdout
|
||||
Network.Wai.Handler.Launch.runUrlPort p "" app
|
||||
then do
|
||||
putStrLn "Press ctrl-c to quit"
|
||||
hFlush stdout
|
||||
let warpsettings =
|
||||
setHost (fromString h) $
|
||||
setPort p $
|
||||
defaultSettings
|
||||
Network.Wai.Handler.Warp.runSettings warpsettings app
|
||||
else do
|
||||
putStrLn "Starting web browser..."
|
||||
putStrLn "Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)"
|
||||
hFlush stdout
|
||||
Network.Wai.Handler.Launch.runHostPortUrl h p "" app
|
||||
|
||||
|
||||
@ -9,6 +9,11 @@ packages:
|
||||
- hledger-ui
|
||||
- hledger-web
|
||||
- hledger-api
|
||||
- location:
|
||||
git: https://github.com/simonmichael/wai
|
||||
commit: 96847d4cfc5894823f591746cac32416f941ed90
|
||||
subdirs:
|
||||
- wai-handler-launch
|
||||
|
||||
extra-deps:
|
||||
- file-embed-0.0.10
|
||||
|
||||
Loading…
Reference in New Issue
Block a user