on master help sign in
simplify remove-old-stack-work-libs.hs more
commit9ba15fcde0fdb78fca104d7e8d230576f85474f3 authorJens Petersen <juhpetersen@gmail.com> dateTue 19 May 2020, 10:58 (6 years ago) parente243a37
1 file changed+5−11
etc/diskspace/remove-old-stack-work-libs.hs+5−11
etc/diskspace/remove-old-stack-work-libs.hs+5−11
@@ -8,11 +8,12 @@
88
99import Data.List
1010import System.Directory
11+import System.FilePath
1112
1213main = do
1314 files <- sort <$> listDirectory "."
14− (libdirs,dynlibs) <- partitionM doesDirectoryExist files
15− let pkglibdirs = groupBy samePkgLibDir libdirs
15+ let (dynlibs,libdirs) = partition (".so" `isExtensionOf`) files
16+ pkglibdirs = groupBy samePkgLibDir libdirs
1617 pkgdynlibs = groupBy samePkgDynLib dynlibs
1718 mapM_ (removeOlder removeDirectoryRecursive) pkglibdirs
1819 mapM_ (removeOlder removeFile) pkgdynlibs
@@ -32,10 +33,11 @@ main = do
3233 where
3334 pkgDynName p =
3435 if countDashes p < 3
35− then error $ p ++ " not in libname-version-hash-ghc*.so format"
36+ then error $ p ++ " not in libHSname-version-hash-ghc*.so format"
3637 else (removeDashSegment . removeDashSegment . removeDashSegment) p
3738
3839 removeOlder remover files = do
40+ -- keep 2 latest builds
3941 oldfiles <- drop 2 . reverse <$> sortByAge files
4042 mapM_ remover oldfiles
4143
@@ -45,11 +47,3 @@ main = do
4547 return $ map fst $ sortBy compareSnd fileTimes
4648
4749 compareSnd (_,t1) (_,t2) = compare t1 t2
48−
49−-- borrowed from Control.Monad.Extra
50−partitionM :: Monad m => (a -> m Bool) -> [a] -> m ([a], [a])
51−partitionM f [] = pure ([], [])
52−partitionM f (x:xs) = do
53− res <- f x
54− (as,bs) <- partitionM f xs
55− pure ([x | res]++as, [x | not res]++bs)