yesod-bin 1.2.0.1 → 1.2.1
raw patch · 9 files changed
+85/−75 lines, 9 files
Files
- Devel.hs +13/−8
- hsfiles/mongo.hsfiles +9/−8
- hsfiles/mysql.hsfiles +12/−12
- hsfiles/postgres-fay.hsfiles +13/−13
- hsfiles/postgres.hsfiles +12/−12
- hsfiles/simple.hsfiles +9/−8
- hsfiles/sqlite.hsfiles +12/−12
- main.hs +4/−1
- yesod-bin.cabal +1/−1
Devel.hs view
@@ -102,13 +102,14 @@ , buildDir :: Maybe String , develPort :: Int , proxyTimeout :: Int+ , useReverseProxy :: Bool } deriving (Show, Eq) getBuildDir :: DevelOpts -> String getBuildDir opts = fromMaybe "dist" (buildDir opts) defaultDevelOpts :: DevelOpts-defaultDevelOpts = DevelOpts False False False (-1) Nothing Nothing Nothing 3000 10+defaultDevelOpts = DevelOpts False False False (-1) Nothing Nothing Nothing 3000 10 True cabalProgram :: DevelOpts -> FilePath cabalProgram opts | isCabalDev opts = "cabal-dev"@@ -159,17 +160,21 @@ sClose s return True -getPort :: Int -> IO Int-getPort p = do- avail <- checkPort p- if avail then return p else getPort (succ p)+getPort :: DevelOpts -> Int -> IO Int+getPort opts _ | not (useReverseProxy opts) = return $ develPort opts+getPort _ p0 =+ loop p0+ where+ loop p = do+ avail <- checkPort p+ if avail then return p else loop (succ p) devel :: DevelOpts -> [String] -> IO () devel opts passThroughArgs = withSocketsDo $ withManager $ \manager -> do avail <- checkPort $ develPort opts unless avail $ error "devel port unavailable"- iappPort <- getPort 17834 >>= I.newIORef- _ <- forkIO $ reverseProxy opts iappPort+ iappPort <- getPort opts 17834 >>= I.newIORef+ when (useReverseProxy opts) $ void $ forkIO $ reverseProxy opts iappPort checkDevelFile writeLock opts @@ -233,7 +238,7 @@ env0 <- liftIO getEnvironment -- get a new port for the new process to listen on- appPort <- liftIO $ I.readIORef iappPort >>= getPort . (+ 1)+ appPort <- liftIO $ I.readIORef iappPort >>= getPort opts . (+ 1) liftIO $ I.writeIORef iappPort appPort (_,_,_,ph) <- liftIO $ createProcess (proc "runghc" devArgs)
hsfiles/mongo.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -101,7 +101,6 @@ import qualified Settings import Settings.Development (development) import qualified Database.Persist-import Database.Persist.Sql (SqlPersistT) import Settings.StaticFiles import Database.Persist.MongoDB hiding (master) import Settings (widgetFile, Extra (..))@@ -176,7 +175,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -263,7 +262,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -273,7 +272,7 @@ setTitle "Welcome To Yesod!" $(widgetFile "homepage") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -5769,7 +5768,7 @@ import TestImport import qualified Data.List as L -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5808,7 +5807,8 @@ , module Foundation , module Database.Persist , runDB- , Specs+ , Spec+ , Example ) where import Yesod.Test@@ -5821,7 +5821,8 @@ import Foundation import Model -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App runDB :: Action (NoLoggingT (ResourceT IO)) a -> YesodExample App a runDB query = do
hsfiles/mysql.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -182,7 +182,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -271,7 +271,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -281,7 +281,7 @@ setTitle "Welcome To Yesod!" $(widgetFile "homepage") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -5798,7 +5798,7 @@ import TestImport import qualified Data.List as L -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5837,25 +5837,25 @@ , module Foundation , module Database.Persist , runDB- , Specs+ , Spec+ , Example ) where import Yesod.Test import Database.Persist hiding (get)-import Database.Persist.Sql (runSqlPool, SqlPersist, Connection)-import Control.Monad.Trans.Resource (ResourceT, runResourceT)-import Control.Monad.Logger (NoLoggingT, runNoLoggingT)+import Database.Persist.Sql (SqlPersistM, runSqlPersistMPool) import Control.Monad.IO.Class (liftIO) import Foundation import Model -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App -runDB :: SqlPersist (NoLoggingT (ResourceT IO)) a -> YesodExample App a+runDB :: SqlPersistM a -> Example a runDB query = do pool <- fmap connPool getTestYesod- liftIO $ runResourceT $ runNoLoggingT $ runSqlPool query pool+ liftIO $ runSqlPersistMPool query pool {-# START_FILE tests/main.hs #-} {-# LANGUAGE OverloadedStrings #-}
hsfiles/postgres-fay.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -186,7 +186,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -301,7 +301,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -312,7 +312,7 @@ $(widgetFile "homepage") $(fayFile' (ConE 'StaticR) "Home") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -881,7 +881,7 @@ #ifdef FAY import FFI #else-import Language.Fay.FFI+--import Language.Fay.FFI #endif data Command = GetFib Int (Returns Int)@@ -5884,7 +5884,7 @@ import TestImport import qualified Data.List as L -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5923,25 +5923,25 @@ , module Foundation , module Database.Persist , runDB- , Specs+ , Spec+ , Example ) where import Yesod.Test import Database.Persist hiding (get)-import Database.Persist.Sql (runSqlPool, SqlPersist, Connection)-import Control.Monad.Trans.Resource (ResourceT, runResourceT)-import Control.Monad.Logger (NoLoggingT, runNoLoggingT)+import Database.Persist.Sql (SqlPersistM, runSqlPersistMPool) import Control.Monad.IO.Class (liftIO) import Foundation import Model -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App -runDB :: SqlPersist (NoLoggingT (ResourceT IO)) a -> YesodExample App a+runDB :: SqlPersistM a -> Example a runDB query = do pool <- fmap connPool getTestYesod- liftIO $ runResourceT $ runNoLoggingT $ runSqlPool query pool+ liftIO $ runSqlPersistMPool query pool {-# START_FILE tests/main.hs #-} {-# LANGUAGE OverloadedStrings #-}
hsfiles/postgres.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -182,7 +182,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -271,7 +271,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -281,7 +281,7 @@ setTitle "Welcome To Yesod!" $(widgetFile "homepage") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -5772,7 +5772,7 @@ import TestImport import qualified Data.List as L -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5811,25 +5811,25 @@ , module Foundation , module Database.Persist , runDB- , Specs+ , Spec+ , Example ) where import Yesod.Test import Database.Persist hiding (get)-import Database.Persist.Sql (runSqlPool, SqlPersist, Connection)-import Control.Monad.Trans.Resource (ResourceT, runResourceT)-import Control.Monad.Logger (NoLoggingT, runNoLoggingT)+import Database.Persist.Sql (SqlPersistM, runSqlPersistMPool) import Control.Monad.IO.Class (liftIO) import Foundation import Model -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App -runDB :: SqlPersist (NoLoggingT (ResourceT IO)) a -> YesodExample App a+runDB :: SqlPersistM a -> Example a runDB query = do pool <- fmap connPool getTestYesod- liftIO $ runResourceT $ runNoLoggingT $ runSqlPool query pool+ liftIO $ runSqlPersistMPool query pool {-# START_FILE tests/main.hs #-} {-# LANGUAGE OverloadedStrings #-}
hsfiles/simple.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -26,7 +26,6 @@ import Yesod.Default.Handlers import Network.Wai.Middleware.RequestLogger import Network.HTTP.Conduit (newManager, def)-import Control.Monad.Logger (runLoggingT) import System.IO (stdout) import System.Log.FastLogger (mkLogger) @@ -161,7 +160,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -220,7 +219,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -230,7 +229,7 @@ setTitle "Welcome To Yesod!" $(widgetFile "homepage") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -5649,7 +5648,7 @@ import TestImport -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5676,13 +5675,15 @@ module TestImport ( module Yesod.Test , module Foundation- , Specs+ , Spec+ , Example ) where import Yesod.Test import Foundation -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App {-# START_FILE tests/main.hs #-} {-# LANGUAGE OverloadedStrings #-}
hsfiles/sqlite.hsfiles view
@@ -1,6 +1,6 @@ {-# START_FILE .ghci #-} :set -i.:config:dist/build/autogen-:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls+:set -XCPP -XTemplateHaskell -XQuasiQuotes -XTypeFamilies -XFlexibleContexts -XGADTs -XOverloadedStrings -XMultiParamTypeClasses -XGeneralizedNewtypeDeriving -XEmptyDataDecls -XDeriveDataTypeable {-# START_FILE .gitignore #-} dist*@@ -182,7 +182,7 @@ , css_bootstrap_css ]) $(widgetFile "default-layout")- hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")+ giveUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") -- This is done to provide an optimization for serving static files from -- a separate domain. Please see the staticRoot setting in Settings.hs@@ -271,7 +271,7 @@ -- The majority of the code you will write in Yesod lives in these handler -- functions. You can spread them across multiple files if you are so -- inclined, or create a single monolithic file.-getHomeR :: Handler RepHtml+getHomeR :: Handler Html getHomeR = do (formWidget, formEnctype) <- generateFormPost sampleForm let submission = Nothing :: Maybe (FileInfo, Text)@@ -281,7 +281,7 @@ setTitle "Welcome To Yesod!" $(widgetFile "homepage") -postHomeR :: Handler RepHtml+postHomeR :: Handler Html postHomeR = do ((result, formWidget), formEnctype) <- runFormPost sampleForm let handlerName = "postHomeR" :: Text@@ -5768,7 +5768,7 @@ import TestImport import qualified Data.List as L -homeSpecs :: Specs+homeSpecs :: Spec homeSpecs = ydescribe "These are some example tests" $ do @@ -5807,25 +5807,25 @@ , module Foundation , module Database.Persist , runDB- , Specs+ , Spec+ , Example ) where import Yesod.Test import Database.Persist hiding (get)-import Database.Persist.Sql (runSqlPool, SqlPersist, Connection)-import Control.Monad.Trans.Resource (ResourceT, runResourceT)-import Control.Monad.Logger (NoLoggingT, runNoLoggingT)+import Database.Persist.Sql (SqlPersistM, runSqlPersistMPool) import Control.Monad.IO.Class (liftIO) import Foundation import Model -type Specs = YesodSpec App+type Spec = YesodSpec App+type Example = YesodExample App -runDB :: SqlPersist (NoLoggingT (ResourceT IO)) a -> YesodExample App a+runDB :: SqlPersistM a -> Example a runDB query = do pool <- fmap connPool getTestYesod- liftIO $ runResourceT $ runNoLoggingT $ runSqlPool query pool+ liftIO $ runSqlPersistMPool query pool {-# START_FILE tests/main.hs #-} {-# LANGUAGE OverloadedStrings #-}
main.hs view
@@ -55,6 +55,7 @@ , develExtraArgs :: [String] , _develPort :: Int , _proxyTimeout :: Int+ , _noReverseProxy :: Bool } | Test | AddHandler@@ -92,7 +93,7 @@ Configure -> cabal ["configure"] Build es -> touch' >> cabal ("build":es) Touch -> touch'- Devel da s f r b _ig es p t -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f b p t) es+ Devel da s f r b _ig es p t nrp -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f b p t (not nrp)) es Keter noRebuild -> keter (cabalCommand o) noRebuild Version -> do putStrLn ("yesod-bin version: " ++ showVersion Paths_yesod_bin.version) AddHandler -> addHandler@@ -150,6 +151,8 @@ <> help "Devel server listening port" ) <*> option ( long "proxy-timeout" <> short 'x' <> value 0 <> metavar "N" <> help "Devel server timeout before returning 'not ready' message (in seconds, 0 for none)" )+ <*> switch ( long "disable-reverse-proxy" <> short 'n'+ <> help "Disable reverse proxy" ) extraCabalArgs :: Parser [String] extraCabalArgs = many (strOption ( long "extra-cabal-arg" <> short 'e' <> metavar "ARG"
yesod-bin.cabal view
@@ -1,5 +1,5 @@ name: yesod-bin-version: 1.2.0.1+version: 1.2.1 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>