DisTract-0.2.5: src/DisTract/Version.hs
{- DisTract ------------------------------------------------------\
| |
| Copyright (c) 2007, Matthew Sackman (matthew@wellquite.org) |
| |
| DisTract is freely distributable under the terms of a 3-Clause |
| BSD-style license. For details, see the DisTract web site: |
| http://distract.wellquite.org/ |
| |
\-----------------------------------------------------------------}
{-# LANGUAGE TemplateHaskell #-}
module DisTract.Version (getNameVersionFromCabal)
where
import Data.Version
import Distribution.PackageDescription
import Distribution.Package
import Language.Haskell.TH.Syntax
import Distribution.Verbosity (silent)
getNameVersionFromCabal :: FilePath -> Q [Dec]
getNameVersionFromCabal path
= do { desc <- runIO $ readPackageDescription silent path
; makeNameVersionDeclarations desc
}
makeNameVersionDeclarations :: GenericPackageDescription -> Q [Dec]
makeNameVersionDeclarations desc
= do { versionD <- [d| package_version :: String; package_version = $(lift $ versionStr desc) |]
; nameD <- [d| package_name :: String; package_name = $(lift $ name desc) |]
; return $ nameD ++ versionD
}
name :: GenericPackageDescription -> String
name desc = pkgName $ pkgId desc
pkgId :: GenericPackageDescription -> PackageIdentifier
pkgId desc = package $ packageDescription desc
versionStr :: GenericPackageDescription -> String
versionStr desc = showVersion $ version desc
version :: GenericPackageDescription -> Version
version desc = pkgVersion $ pkgId desc