module CLI.Ls where import Control.Applicative import Control.Monad import Data.List import Data.List.Split import Data.Time.LocalTime import System.Directory import System.IO ls filepath = do files <- map ((filepath ++ "/") ++ ) <$> filter (isInfixOf "log") <$> getDirectoryContents filepath contents <- mapM readFile files return $ timeFilter $ map ( \xs -> (localTimeOfDay $ read (xs!!0 ++" "++ xs!!1), xs!!5 ,xs!!7 ,xs!!9 ))$ filter(\xs -> (length xs) == 12 ) $ join $ map (splitEvery 12) $ filter(\xs -> (length xs) > 5 ) $ map words $ map concat $ map (filter (isInfixOf "Resources: [G]:") . lines) contents ls2 filepath = do files <- map ((filepath ++ "/") ++ ) <$> filter (isInfixOf "log") <$> getDirectoryContents filepath contents <- mapM readFile files return $ map ( \xs -> ( todHour.localTimeOfDay $ (read (xs!!0 ++" "++ xs!!1)) ,read (xs!!5) ::Int ,read (xs!!7) ::Int ,read (xs!!9) ::Int) ) $ filter(\xs -> (length xs) == 12 ) $ join $ map (splitEvery 12) $ filter(\xs -> (length xs) > 5 ) $ map words $ map concat $ map (filter (isInfixOf "Resources: [G]:") . lines) contents timeFilter = foldr (\x acc -> (if acc ==[] || ((\(y,_,_,_) -> y) x) < ((\(z,_,_,_) -> z) $ head acc) then x:acc else acc) ) []