Sort output by total size
import Data.Aeson.Types (prependFailure, typeMismatch)
import Data.Text (Text)
import GHC.Base (quotInt)
-import Relude (catMaybes, foldMapM, stderr)
+import Relude (catMaybes, foldMapM, sortWith)
import System.Directory (doesDirectoryExist, listDirectory, pathIsSymbolicLink)
import System.IO (stderr, hPutStrLn)
import System.Posix.Files qualified as Posix
hPutStrLn stderr "Scanning gcroots..."
pb <- hNewProgressBar stderr ProgressBar.defStyle 10 (ProgressBar.Progress 0 (length gcrootPaths) ())
gcroots <- catMaybes <$> mapM (collectAndLog pb) gcrootPaths
- mapM_ printGcroot gcroots
+ let sorted = sortWith (negate . totalSize . gcrootDependencies) gcroots
+ mapM_ printGcroot sorted
where
collectAndLog pb root =
collectGcroot root