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 Settings            --  (parseExtra) | ||||||
| import Application          (makeApplication) | import Application          (makeApplication) | ||||||
| import Data.String | import Data.String | ||||||
| import Network.Wai.Handler.Warp (runSettings, defaultSettings, setPort) | import Network.Wai.Handler.Warp (runSettings, defaultSettings, setHost, setPort) | ||||||
| import Network.Wai.Handler.Launch (runUrlPort) | import Network.Wai.Handler.Launch (runHostPortUrl) | ||||||
| -- | -- | ||||||
| #if !MIN_VERSION_base(4,8,0) | #if !MIN_VERSION_base(4,8,0) | ||||||
| import Control.Applicative ((<$>)) | import Control.Applicative ((<$>)) | ||||||
| @ -70,23 +70,30 @@ web :: WebOpts -> Journal -> IO () | |||||||
| web opts j = do | web opts j = do | ||||||
|   d <- getCurrentDay |   d <- getCurrentDay | ||||||
|   let j' = filterJournalTransactions (queryFromOpts d $ reportopts_ $ cliopts_ opts) j |   let j' = filterJournalTransactions (queryFromOpts d $ reportopts_ $ cliopts_ opts) j | ||||||
|  |       h = "127.0.0.1" | ||||||
|       p = port_ opts |       p = port_ opts | ||||||
|       u = base_url_ opts |       u = base_url_ opts | ||||||
|       staticRoot = pack <$> file_url_ opts |       staticRoot = pack <$> file_url_ opts | ||||||
|   _ <- printf "Starting web app on port %d with base url %s\n" p u |       appconfig = AppConfig{appEnv = Development | ||||||
|   app <- makeApplication opts j' AppConfig{appEnv = Development |                            ,appHost = fromString h | ||||||
|                            ,appPort = p |                            ,appPort = p | ||||||
|                            ,appRoot = pack u |                            ,appRoot = pack u | ||||||
|                                           ,appHost = fromString "*4" |  | ||||||
|                            ,appExtra = Extra "" Nothing staticRoot |                            ,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 |   if server_ opts | ||||||
|     then do |     then do | ||||||
|       putStrLn "Press ctrl-c to quit" |       putStrLn "Press ctrl-c to quit" | ||||||
|       hFlush stdout |       hFlush stdout | ||||||
|     Network.Wai.Handler.Warp.runSettings (setPort p defaultSettings) app |       let warpsettings = | ||||||
|  |             setHost (fromString h) $ | ||||||
|  |             setPort p $ | ||||||
|  |             defaultSettings | ||||||
|  |       Network.Wai.Handler.Warp.runSettings warpsettings app | ||||||
|     else do |     else do | ||||||
|     putStrLn "Starting web browser if possible" |       putStrLn "Starting web browser..." | ||||||
|       putStrLn "Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)" |       putStrLn "Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)" | ||||||
|       hFlush stdout |       hFlush stdout | ||||||
|     Network.Wai.Handler.Launch.runUrlPort p "" app |       Network.Wai.Handler.Launch.runHostPortUrl h p "" app | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -9,6 +9,11 @@ packages: | |||||||
| - hledger-ui | - hledger-ui | ||||||
| - hledger-web | - hledger-web | ||||||
| - hledger-api | - hledger-api | ||||||
|  | - location: | ||||||
|  |     git: https://github.com/simonmichael/wai | ||||||
|  |     commit: 96847d4cfc5894823f591746cac32416f941ed90 | ||||||
|  |   subdirs: | ||||||
|  |     - wai-handler-launch | ||||||
| 
 | 
 | ||||||
| extra-deps: | extra-deps: | ||||||
| - file-embed-0.0.10 | - file-embed-0.0.10 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user