web: support wai-handler-devel for auto-rebuilding
Eg: hledger-web$ wai-handler-devel 5001 AppRun withWaiHandlerDevelApp
This commit is contained in:
		
							parent
							
								
									6496c1ef61
								
							
						
					
					
						commit
						d1447c984a
					
				@ -5,14 +5,17 @@
 | 
				
			|||||||
module AppRun (
 | 
					module AppRun (
 | 
				
			||||||
               withApp
 | 
					               withApp
 | 
				
			||||||
              ,withDevelApp
 | 
					              ,withDevelApp
 | 
				
			||||||
 | 
					              ,withWaiHandlerDevelApp
 | 
				
			||||||
              )
 | 
					              )
 | 
				
			||||||
where
 | 
					where
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Data.Dynamic (Dynamic, toDyn)
 | 
					import Data.Dynamic (Dynamic, toDyn)
 | 
				
			||||||
import Network.Wai (Application)
 | 
					import Network.Wai (Application)
 | 
				
			||||||
 | 
					import System.IO.Storage (withStore, putValue)
 | 
				
			||||||
import Yesod.Helpers.Static
 | 
					import Yesod.Helpers.Static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Hledger.Data (nulljournal)
 | 
					import Hledger
 | 
				
			||||||
 | 
					import Hledger.Cli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import App
 | 
					import App
 | 
				
			||||||
import Handlers
 | 
					import Handlers
 | 
				
			||||||
@ -30,6 +33,7 @@ mkYesodDispatch "App" resourcesApp
 | 
				
			|||||||
withApp :: App -> (Application -> IO a) -> IO a
 | 
					withApp :: App -> (Application -> IO a) -> IO a
 | 
				
			||||||
withApp a f = toWaiApp a >>= f
 | 
					withApp a f = toWaiApp a >>= f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Called by yesod devel.
 | 
				
			||||||
withDevelApp :: Dynamic
 | 
					withDevelApp :: Dynamic
 | 
				
			||||||
withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ())
 | 
					withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ())
 | 
				
			||||||
   where a = App{
 | 
					   where a = App{
 | 
				
			||||||
@ -39,3 +43,21 @@ withDevelApp = toDyn (withApp a :: (Application -> IO ()) -> IO ())
 | 
				
			|||||||
             ,appArgs=[]
 | 
					             ,appArgs=[]
 | 
				
			||||||
             ,appJournal=nulljournal
 | 
					             ,appJournal=nulljournal
 | 
				
			||||||
             }
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Called by wai-handler-devel.
 | 
				
			||||||
 | 
					-- Eg: cabal-dev/bin/wai-handler-devel 5001 AppRun withWaiHandlerDevelApp
 | 
				
			||||||
 | 
					withWaiHandlerDevelApp :: (Application -> IO ()) -> IO ()
 | 
				
			||||||
 | 
					withWaiHandlerDevelApp func = do
 | 
				
			||||||
 | 
					  let f = "/repos/hledger/hledger-web/demo.journal"
 | 
				
			||||||
 | 
					  ej <- readJournalFile Nothing f
 | 
				
			||||||
 | 
					  let Right j = ej
 | 
				
			||||||
 | 
					  let a = App{
 | 
				
			||||||
 | 
					              getStatic=static Settings.staticdir
 | 
				
			||||||
 | 
					             ,appRoot=Settings.defapproot
 | 
				
			||||||
 | 
					             ,appOpts=[File f]
 | 
				
			||||||
 | 
					             ,appArgs=[]
 | 
				
			||||||
 | 
					             ,appJournal=j
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					  withStore "hledger" $ do
 | 
				
			||||||
 | 
					    putValue "hledger" "journal" j
 | 
				
			||||||
 | 
					    withApp a func
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user