diff --git a/app/Main.hs b/app/Main.hs index 8978d99..0bc017d 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,14 +1,17 @@ module Main where -import System.Posix.Directory ( getWorkingDirectory ) -import System.Directory - ( pathIsSymbolicLink, doesFileExist, getFileSize, doesDirectoryExist ) -import Data.Functor ( (<&>) ) -import Control.Monad ( filterM ) -import System.Directory.Extra ( listContents ) -import Brick -import Graphics.Vty -import Data.List.Extra +import System.Posix.Directory ( getWorkingDirectory ) +import System.Directory ( pathIsSymbolicLink + , doesFileExist + , getFileSize + , doesDirectoryExist ) +import Data.Functor ( (<&>) ) +import Control.Monad ( filterM ) +import System.Directory.Extra ( listContents ) +import Brick +import Graphics.Vty +import Data.List.Extra +import qualified Data.Ord listNonSymFiles :: FilePath -> IO [FilePath] listNonSymFiles dir = filterM (fmap not . pathIsSymbolicLink) =<< filterM doesFileExist =<< listContents dir @@ -21,7 +24,7 @@ getSizeSubpaths x = do sub <- listNonSymDirectories x subby <- mapM (\y -> (y,) . sum . map snd <$> getSizeSubpaths y) sub local <- listNonSymFiles x >>= (\y -> mapM getFileSize y <&> zip y) - pure $ local ++ subby + pure $ sortOn (Data.Ord.Down . snd) $ local ++ subby data AppS = AppS {