packages feed

hoogle-4.2.2: src/Recipe/Cabal.hs

module Recipe.Cabal(
    Cabal(..), readCabal
    ) where

import Distribution.Compiler
import Distribution.Package
import Distribution.PackageDescription
import Distribution.PackageDescription.Configuration
import Distribution.PackageDescription.Parse
import Distribution.System
import Distribution.Text
import Distribution.Verbosity
import Distribution.Version
import Recipe.Haddock


ghcVersion = [7,0,1]

data Cabal = Cabal
    {cabalName :: String
    ,cabalVersion :: String
    ,cabalDescription :: [String]
    ,cabalDepends :: [String]
    } deriving Show


readCabal :: FilePath -> IO Cabal
readCabal file = do
    pkg <- readPackageDescription silent file
    let plat = Platform I386 Linux
        comp = CompilerId GHC (Version ghcVersion [])
    pkg <- return $ case finalizePackageDescription [] (const True) plat comp [] pkg of
        Left _ -> flattenPackageDescription pkg
        Right (pkg,_) -> pkg
    return $ Cabal
        (display $ pkgName $ package pkg)
        (display $ pkgVersion $ package pkg)
        (haddockToHTML $ description pkg)
        [display x | Just l <- [library pkg], Dependency x _ <- targetBuildDepends $ libBuildInfo l]