yesod-static: improve messages for embedded compression tools

When trying various compression tools, display some messages
to the user about which compression tool is used.

--HG--
extra : rebase_source : e90e6ed49317b91a0fbe90d94f437459926f59e7
This commit is contained in:
John Lenz 2013-09-19 15:22:14 -05:00
parent 2e7694d465
commit a4690dd424

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