diff --git a/yesod/Yesod/Default/Util.hs b/yesod/Yesod/Default/Util.hs index 488312ae..3f5319e2 100644 --- a/yesod/Yesod/Default/Util.hs +++ b/yesod/Yesod/Default/Util.hs @@ -17,8 +17,9 @@ module Yesod.Default.Util import qualified Data.ByteString.Lazy as L import Data.Text (Text, pack, unpack) import Yesod.Core -- purposely using complete import so that Haddock will see addStaticContent +import Control.Exception (onException) import Control.Monad (when, unless) -import System.Directory (doesFileExist, createDirectoryIfMissing) +import System.Directory (doesFileExist, createDirectoryIfMissing, removeFile) import Language.Haskell.TH.Syntax import Text.Lucius (luciusFile, luciusFileReload) import Text.Julius (juliusFile, juliusFileReload) @@ -43,7 +44,7 @@ addStaticContentExternal addStaticContentExternal minify hash staticDir toRoute ext' _ content = do liftIO $ createDirectoryIfMissing True statictmp exists <- liftIO $ doesFileExist fn' - unless exists $ liftIO $ L.writeFile fn' content' + unless exists $ liftIO $ L.writeFile fn' content' `onException` remove fn' return $ Just $ Right (toRoute ["tmp", pack fn], []) where fn, statictmp, fn' :: FilePath @@ -52,6 +53,7 @@ addStaticContentExternal minify hash staticDir toRoute ext' _ content = do fn = hash content ++ '.' : unpack ext' statictmp = staticDir ++ "/tmp/" fn' = statictmp ++ fn + remove f = doesFileExist f >>= \x -> when x $ removeFile f content' :: L.ByteString content' diff --git a/yesod/yesod.cabal b/yesod/yesod.cabal index 55976c60..5359aba0 100644 --- a/yesod/yesod.cabal +++ b/yesod/yesod.cabal @@ -1,5 +1,5 @@ name: yesod -version: 1.4.3 +version: 1.4.3.1 license: MIT license-file: LICENSE author: Michael Snoyman