module Development.Shake.Clean ( cleanProducts , cleanHaskell ) where import Data.Foldable import Development.Shake hiding ((*>)) -- | Clean generic products (@.o@, @.so@, @.a@). cleanProducts :: Action () cleanProducts = removeFilesAfter "." ["//*.so", "//*.o", "//*.a"] -- | Clean directories and file extensions typically associated w/ Haskell -- builds cleanHaskell :: Action () cleanHaskell = traverse_ (\p -> removeFilesAfter p ["//*"]) [ "dist", "dist-newstyle", ".stack-work", ".cabal-sandbox" ] *> removeFilesAfter "." ["//*.o", "//*.ghc.*", "//*_stub.h", "//*.hi", "//*.dyn_o", "//*.p_o", "//*.dyn_hi", "//*.p_hi", "//*.hc", "//*.haddock", "cabal.sandbox.config"]