packages feed

hackage-db-2.0: example/show-package-versions.hs

{-# LANGUAGE CPP #-}

#if !MIN_VERSION_Cabal(2,0,0)
#  define mkPackageName PackageName
#endif

module Main ( main ) where

import Distribution.Hackage.DB

import Control.Monad ( forM_ )
import Data.Map as Map
import Distribution.Package
import Distribution.Text ( display )
import System.Environment ( getArgs )

main :: IO ()
main = do
  db <- hackageTarball >>= readTarball Nothing
  pkgs <- getArgs
  forM_ pkgs $ \pkg -> do
    let vs = maybe [] Map.keys (Map.lookup (mkPackageName pkg) db)
    putStrLn $ pkg ++ ": " ++ unwords (fmap display vs)