shake-minify-css-0.1.0.0: src/Development/Shake/MinifyCSS.hs
module Development.Shake.MinifyCSS ( -- * Rules
minifyCSSRules
, minifyCSSRulesWith
-- * Actions
, minifyCSSAction
, minifyCSSActionWith
) where
import qualified Data.Text.IO as TIO
import Development.Shake
import Hasmin
import System.Directory (createDirectoryIfMissing)
import System.FilePath (takeDirectory)
minifyCSSRules :: FilePath -- ^ Source file
-> FilePath -- ^ Destination/target
-> Rules ()
minifyCSSRules =
minifyCSSRulesWith defaultConfig
minifyCSSRulesWith :: Config
-> FilePath -- ^ Source file
-> FilePath -- ^ Destination/target
-> Rules ()
minifyCSSRulesWith cfg src tgt =
tgt %> \out ->
minifyCSSActionWith cfg src out
minifyCSSAction :: FilePath -- ^ Source file
-> FilePath -- ^ Destination/target
-> Action ()
minifyCSSAction =
minifyCSSActionWith defaultConfig
minifyCSSActionWith :: Config
-> FilePath -- ^ Source file
-> FilePath -- ^ Destination/target
-> Action ()
minifyCSSActionWith cfg src tgt = do
need [src]
let tgtDir = takeDirectory tgt
traced ("Create directory (" ++ tgtDir ++ ")") $
createDirectoryIfMissing True tgtDir
traced ("Minify CSS (" ++ tgt ++ ")") $ do
contents <- TIO.readFile src
case minifyCSSWith cfg contents of
Right x -> TIO.writeFile tgt x
Left y -> error y