gpah-0.0.1: src/Generics/GPAH/Hackage/PPrint.hs
module Generics.GPAH.Hackage.PPrint where
import Generics.GPAH.Hackage.Base
import Text.CSV
import System.IO
import qualified Data.Map as M
import Data.List
import Data.Function (on)
pprint :: Analysis -> FilePath -> IO ()
pprint (Analysis a1 a2 a3 a4 a5 a6) fp = do
let p = [["TotalNumberOfPackagesInHackage", show a1],
["SuccessfullyParsedModules", show a2],
["FailedToParseModules", show $ length a3],
["PackagesUsingGP", show a4],
["PackagesUsingGPwithAnExe", show a5],
["PackagesUsingSyb", show $ maybe 0 length $ M.lookup "syb" a6],
["PackagesUsingUniplate", show $ maybe 0 length $ M.lookup "uniplate" a6],
["ReverseDeps", show $ sortBy (flip compare `on` snd) $ M.toList $ M.map length a6]
]
pCSV = printCSV p
writeFile fp pCSV
putStrLn "Hackage Results:\n###############"
putStrLn pCSV