Merge pull request #611 from wuzzeb/compress-messages

yesod-static: improve messages for embedded compression tools
This commit is contained in:
Michael Snoyman 2013-10-13 20:56:31 -07:00
commit 5fb40434e9

View File

@ -32,15 +32,16 @@ module Yesod.EmbeddedStatic.Generators (
import Control.Applicative ((<$>)) import Control.Applicative ((<$>))
import Control.Exception (try, SomeException) import Control.Exception (try, SomeException)
import Control.Monad (forM) import Control.Monad (forM, when)
import Control.Monad.Trans.Resource (runResourceT) import Control.Monad.Trans.Resource (runResourceT)
import Data.Char (isDigit, isLower) import Data.Char (isDigit, isLower)
import Data.Conduit (($$), (=$)) import Data.Conduit (($$), (=$))
import Data.Conduit.Process (proc, conduitProcess) import Data.Conduit.Process (proc, conduitProcess)
import Data.Default (def) import Data.Default (def)
import Data.Maybe (isNothing)
import Language.Haskell.TH import Language.Haskell.TH
import Network.Mime (defaultMimeLookup) import Network.Mime (defaultMimeLookup)
import System.Directory (doesDirectoryExist, getDirectoryContents) import System.Directory (doesDirectoryExist, getDirectoryContents, findExecutable)
import System.FilePath ((</>)) import System.FilePath ((</>))
import Text.Jasmine (minifym) import Text.Jasmine (minifym)
import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy as BL
@ -193,10 +194,14 @@ compressTool :: FilePath -- ^ program
-> [String] -- ^ options -> [String] -- ^ options
-> BL.ByteString -> IO BL.ByteString -> BL.ByteString -> IO BL.ByteString
compressTool f opts ct = do compressTool f opts ct = do
mpath <- findExecutable f
when (isNothing mpath) $
fail $ "Unable to find " ++ f
let src = C.sourceList $ BL.toChunks ct let src = C.sourceList $ BL.toChunks ct
p = proc f opts p = proc f opts
sink = C.consume sink = C.consume
compressed <- runResourceT (src $$ conduitProcess p =$ sink) compressed <- runResourceT (src $$ conduitProcess p =$ sink)
putStrLn $ "Compressed successfully with " ++ f
return $ BL.fromChunks compressed return $ BL.fromChunks compressed