packages feed

cabalQuery-0.1.0.0: src/Distribution/Query.hs

module Distribution.Query where

import Data.List
import Data.Version (showVersion)
import Distribution.Package
import Distribution.PackageDescription (GenericPackageDescription)
import qualified Distribution.PackageDescription as PD
import Distribution.PackageDescription.Parse
import Distribution.Text
import Distribution.Version

import Text.PrettyPrint (render)

loadDescr :: FilePath -> IO (Either String GenericPackageDescription)
loadDescr cabalFile = do
  content <- readFile cabalFile
  return $ case parsePackageDescription content of
    ParseFailed err -> Left (show err)
    ParseOk _   gpd -> Right gpd

numericVersion :: GenericPackageDescription -> String
numericVersion = showVersion . pkgVersion . PD.package . PD.packageDescription

name :: GenericPackageDescription -> String
name = unPackageName . pkgName . PD.package . PD.packageDescription

license :: GenericPackageDescription -> String
license = render . disp . PD.license . PD.packageDescription

copyright :: GenericPackageDescription -> String
copyright = getField PD.copyright

homepage :: GenericPackageDescription -> String
homepage = getField PD.homepage

pkgUrl :: GenericPackageDescription -> String
pkgUrl = getField PD.pkgUrl

bugReports :: GenericPackageDescription -> String
bugReports = getField PD.bugReports

category :: GenericPackageDescription -> String
category = getField PD.category

buildType :: GenericPackageDescription -> String
buildType = getField PD.buildType

dataDir :: GenericPackageDescription -> String
dataDir = getField PD.dataDir

synopsis :: GenericPackageDescription -> String
synopsis = getField PD.synopsis

description :: GenericPackageDescription -> String
description = getField PD.description



getField :: Show a => (PD.PackageDescription -> a) -> GenericPackageDescription -> String
getField getter = show . getter . PD.packageDescription