packages feed

hid-examples-0.4: du/du.hs

module Main where

import Data.Foldable
import Data.Monoid
import System.Environment

import Options.Applicative as Opt

import App
import DiskUsage
import FileCounter

mkConfig :: Opt.Parser AppConfig
mkConfig = AppConfig
           <$> strArgument (metavar "DIRECTORY" <> value "." <> showDefault) 
           <*> option auto (metavar "DEPTH" <> short 'd' <> long "depth"
               <> value 0 <> showDefault <> help "Maximum depth of reporting ")
           <*> optional
               (strOption (metavar "EXT" <> long "extension" <> short 'e'
                <> help "Filter files by extension"))

printLog :: Show s => AppLog s -> IO ()
printLog = traverse_ printEntry 
  where
    printEntry (fp, s) = do
      putStr $ show s ++ "\t"
      putStrLn fp



work :: AppConfig -> IO ()
work config = do
  (_, xs) <- runMyApp diskUsage config 0
  putStrLn "File space usage:"
  printLog xs

  (_, xs') <- runMyApp fileCount config 0
  putStrLn "File counter:"
  printLog xs'
  
  
main = execParser opts >>= work
  where
    opts = info (mkConfig <**> helper)
                (fullDesc <> progDesc "File space usage info")