access Hackage's package database via Data.Map


Version on this page:1.11
LTS Haskell 20.15:2.1.2@rev:1
Stackage Nightly 2023-03-24:2.1.2@rev:1
Latest on Hackage:2.1.2@rev:1

See all snapshots hackage-db appears in

BSD-3-Clause licensed and maintained by Peter Simons
This version can be pinned in stack with:hackage-db-1.11@sha256:04ba68ab43a285ce5215c2e7c05300624f02ee1f275272f94d0d2f04a31547ba,2255

Module documentation for 1.11

Used by 1 package in nightly-2015-03-25(full list with versions):

This module provides simple access to the Hackage database by means of Data.Map. Suppose you wanted to implement a utility that queries the set of available versions for a given package, the following program would do the trick:

import qualified Distribution.Hackage.DB as DB
import Distribution.Text ( display )
import System.Environment ( getArgs )

main :: IO ()
main = do
  pkgs <- getArgs
  db <- DB.readHackage
  let getVersions name = maybe [] DB.keys (DB.lookup name db)
  mapM_ (putStrLn . unwords . map display . getVersions) pkgs

When run, it would produce the following output:

./a.out containers deepseq cabal-install
0.4.0 0.5.0 0.5.1 0.5.2 0.6.0 0.6.2 0.6.4 0.8.0 0.8.2 0.10.0 0.10.2

Note that once the database has been parsed, it can be accessed quickly, but the inital cost of reading 00-index.tar is fairly high.

This package is known to work on Linux and Mac OS X, but it's probably not going to work on Windows (because no-one tested it, as far as I know).