packages feed

cabal-file-th 0.2.3 → 0.2.4

raw patch · 4 files changed

+44/−13 lines, 4 filesdep +prettydep ~Cabaldep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: pretty

Dependency ranges changed: Cabal, base

API changes (from Hackage documentation)

- Distribution.PackageDescription.TH: author :: PackageDescription -> String
- Distribution.PackageDescription.TH: benchmarks :: PackageDescription -> [Benchmark]
- Distribution.PackageDescription.TH: bugReports :: PackageDescription -> String
- Distribution.PackageDescription.TH: buildDepends :: PackageDescription -> [Dependency]
- Distribution.PackageDescription.TH: buildType :: PackageDescription -> Maybe BuildType
- Distribution.PackageDescription.TH: category :: PackageDescription -> String
- Distribution.PackageDescription.TH: copyright :: PackageDescription -> String
- Distribution.PackageDescription.TH: customFieldsPD :: PackageDescription -> [(String, String)]
- Distribution.PackageDescription.TH: dataDir :: PackageDescription -> FilePath
- Distribution.PackageDescription.TH: dataFiles :: PackageDescription -> [FilePath]
- Distribution.PackageDescription.TH: description :: PackageDescription -> String
- Distribution.PackageDescription.TH: executables :: PackageDescription -> [Executable]
- Distribution.PackageDescription.TH: extraSrcFiles :: PackageDescription -> [FilePath]
- Distribution.PackageDescription.TH: extraTmpFiles :: PackageDescription -> [FilePath]
- Distribution.PackageDescription.TH: homepage :: PackageDescription -> String
- Distribution.PackageDescription.TH: library :: PackageDescription -> Maybe Library
- Distribution.PackageDescription.TH: license :: PackageDescription -> License
- Distribution.PackageDescription.TH: licenseFile :: PackageDescription -> FilePath
- Distribution.PackageDescription.TH: maintainer :: PackageDescription -> String
- Distribution.PackageDescription.TH: package :: PackageDescription -> PackageIdentifier
- Distribution.PackageDescription.TH: pkgName :: PackageIdentifier -> PackageName
- Distribution.PackageDescription.TH: pkgUrl :: PackageDescription -> String
- Distribution.PackageDescription.TH: pkgVersion :: PackageIdentifier -> Version
- Distribution.PackageDescription.TH: sourceRepos :: PackageDescription -> [SourceRepo]
- Distribution.PackageDescription.TH: specVersionRaw :: PackageDescription -> Either Version VersionRange
- Distribution.PackageDescription.TH: stability :: PackageDescription -> String
- Distribution.PackageDescription.TH: synopsis :: PackageDescription -> String
- Distribution.PackageDescription.TH: testSuites :: PackageDescription -> [TestSuite]
- Distribution.PackageDescription.TH: testedWith :: PackageDescription -> [(CompilerFlavor, VersionRange)]
- Distribution.PackageDescription.TH: versionBranch :: Version -> [Int]
- Distribution.PackageDescription.TH: versionTags :: Version -> [String]
+ Distribution.PackageDescription.TH: [author] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [benchmarks] :: PackageDescription -> [Benchmark]
+ Distribution.PackageDescription.TH: [bugReports] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [buildDepends] :: PackageDescription -> [Dependency]
+ Distribution.PackageDescription.TH: [buildType] :: PackageDescription -> Maybe BuildType
+ Distribution.PackageDescription.TH: [category] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [copyright] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [customFieldsPD] :: PackageDescription -> [(String, String)]
+ Distribution.PackageDescription.TH: [dataDir] :: PackageDescription -> FilePath
+ Distribution.PackageDescription.TH: [dataFiles] :: PackageDescription -> [FilePath]
+ Distribution.PackageDescription.TH: [description] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [executables] :: PackageDescription -> [Executable]
+ Distribution.PackageDescription.TH: [extraDocFiles] :: PackageDescription -> [FilePath]
+ Distribution.PackageDescription.TH: [extraSrcFiles] :: PackageDescription -> [FilePath]
+ Distribution.PackageDescription.TH: [extraTmpFiles] :: PackageDescription -> [FilePath]
+ Distribution.PackageDescription.TH: [homepage] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [library] :: PackageDescription -> Maybe Library
+ Distribution.PackageDescription.TH: [licenseFiles] :: PackageDescription -> [FilePath]
+ Distribution.PackageDescription.TH: [license] :: PackageDescription -> License
+ Distribution.PackageDescription.TH: [maintainer] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [package] :: PackageDescription -> PackageIdentifier
+ Distribution.PackageDescription.TH: [pkgName] :: PackageIdentifier -> PackageName
+ Distribution.PackageDescription.TH: [pkgUrl] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [pkgVersion] :: PackageIdentifier -> Version
+ Distribution.PackageDescription.TH: [setupBuildInfo] :: PackageDescription -> Maybe SetupBuildInfo
+ Distribution.PackageDescription.TH: [sourceRepos] :: PackageDescription -> [SourceRepo]
+ Distribution.PackageDescription.TH: [specVersionRaw] :: PackageDescription -> Either Version VersionRange
+ Distribution.PackageDescription.TH: [stability] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [synopsis] :: PackageDescription -> String
+ Distribution.PackageDescription.TH: [testSuites] :: PackageDescription -> [TestSuite]
+ Distribution.PackageDescription.TH: [testedWith] :: PackageDescription -> [(CompilerFlavor, VersionRange)]
+ Distribution.PackageDescription.TH: [versionBranch] :: Version -> [Int]
+ Distribution.PackageDescription.TH: [versionTags] :: Version -> [String]
+ Distribution.PackageDescription.TH: instance Distribution.Text.Text Distribution.PackageDescription.TH.DocString
+ Distribution.PackageDescription.TH: packageString :: String -> DocString
- Distribution.PackageDescription.TH: PackageDescription :: PackageIdentifier -> License -> FilePath -> String -> String -> String -> String -> [(CompilerFlavor, VersionRange)] -> String -> String -> String -> [SourceRepo] -> String -> String -> String -> [(String, String)] -> [Dependency] -> Either Version VersionRange -> Maybe BuildType -> Maybe Library -> [Executable] -> [TestSuite] -> [Benchmark] -> [FilePath] -> FilePath -> [FilePath] -> [FilePath] -> PackageDescription
+ Distribution.PackageDescription.TH: PackageDescription :: PackageIdentifier -> License -> [FilePath] -> String -> String -> String -> String -> [(CompilerFlavor, VersionRange)] -> String -> String -> String -> [SourceRepo] -> String -> String -> String -> [(String, String)] -> [Dependency] -> Either Version VersionRange -> Maybe BuildType -> Maybe SetupBuildInfo -> Maybe Library -> [Executable] -> [TestSuite] -> [Benchmark] -> [FilePath] -> FilePath -> [FilePath] -> [FilePath] -> [FilePath] -> PackageDescription

Files

Distribution/PackageDescription/TH.hs view
@@ -7,6 +7,7 @@     -- * Template Haskell functions     packageVariable,     packageVariableFrom,+    packageString,     -- * Cabal file data structures     -- | The data structures for the cabal file are re-exported here for ease of use.     PackageDescription(..),@@ -18,13 +19,27 @@ import Distribution.Package import Distribution.Version -import Distribution.Text (Text, display)+import Distribution.Text+import Distribution.Compat.ReadP import Distribution.Verbosity (silent)+import Text.PrettyPrint import Distribution.PackageDescription.Parse (readPackageDescription) import System.Directory (getCurrentDirectory, getDirectoryContents) import Data.List (isSuffixOf) import Language.Haskell.TH (Q, Exp, stringE, runIO) +newtype DocString = DocString String++instance Text DocString where+  parse = DocString <$> (readS_to_P read)+  disp (DocString s) = text s++-- | Provides a Text instance for String, allowing text fields to be used+--   in `packageVariable`. Use it composed with an accessor, eg.+--       packageVariable (packageString . copyright)+packageString :: String -> DocString+packageString = DocString+ -- | Renders the package variable specified by the function. -- The cabal file interrogated is the first one that is found  -- in the current working directory.@@ -38,8 +53,11 @@  ------ renderField :: Text b => IO a -> (a -> b) -> Q Exp-renderField pd f = runIO pd >>= stringE . display . f +renderField pd f = renderFieldS pd (display . f) +renderFieldS :: IO a -> (a -> String) -> Q Exp+renderFieldS pd f = runIO pd >>= stringE . f+ currentPackageDescription :: IO PackageDescription currentPackageDescription = fmap packageDescription $ do   dir <- getCurrentDirectory@@ -59,7 +77,7 @@   * Get this module name, use TH.location and loc_module. Parse each     cabal file in the cwd and look for references to this module     in each thing.-  +    -} 
cabal-file-th.cabal view
@@ -1,5 +1,5 @@ Name:                cabal-file-th-Version:             0.2.3+Version:             0.2.4 Synopsis:            Template Haskell expressions for reading fields from a project's cabal file. Description:         Template Haskell expressions for reading fields from a project's cabal file. Homepage:            http://github.com/nkpart/cabal-file-th@@ -20,15 +20,17 @@ Library   Exposed-modules:   Distribution.PackageDescription.TH   Build-depends:     base >= 4 && < 5,-                     Cabal >= 1.10 && < 1.17,+                     Cabal >= 1.10,                      directory,-                     template-haskell-  Ghc-options: -Wall+                     template-haskell,+                     pretty+  Ghc-options: -Wall     Test-suite test+  Ghc-options: -Wall   Main-is:  Test.hs   Hs-source-dirs:    test   Type:     exitcode-stdio-1.0   Build-depends: base >= 4 && < 5,-                 cabal-file-th+                 cabal-file-th, Cabal 
test/Test.hs view
@@ -2,11 +2,19 @@ module Main where  import Distribution.PackageDescription.TH+import Control.Monad (when) +main :: IO () main = do+  let simpleAssert msg a b =+        when (a /= b) $+          error (msg ++ ": expected " ++ b ++ ", read: " ++ a)+   putStrLn $ "This package is version " ++ $(packageVariable (pkgVersion . package))   let testVersion = $(packageVariableFrom "test/test-version-interp.cabal" (pkgVersion . package))-  let expectedVersion = "5.5.5"-  if testVersion /= expectedVersion-    then error ("Expected " ++ expectedVersion ++ ", read: " ++ testVersion)-    else putStrLn "Everything went better than expected."+      testCopyright = $(packageVariableFrom "test/test-version-interp.cabal" (packageString . copyright))+  simpleAssert "version" testVersion "5.5.5"+  simpleAssert "copyright" testCopyright "(c) 1953 Gumby"++  putStrLn "Everything went better than expected."+
test/test-version-interp.cabal view
@@ -1,9 +1,12 @@ Name:                test-version-interp Version:             5.5.5 License:             BSD3-License-file:        LICENSE Build-type:          Simple Cabal-version:       >=1.2 +copyright: (c) 1953 Gumby+ Library   Exposed-modules:     Test+  build-depends: base, cabal-file-th+