packages feed

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