Reverse sort
This commit is contained in:
		
							
								
								
									
										24
									
								
								app/Main.hs
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								app/Main.hs
									
									
									
									
									
								
							@ -1,14 +1,18 @@
 | 
			
		||||
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 +25,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
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user