simple-cabal 0.1.1 → 0.1.2
raw patch · 4 files changed
+105/−39 lines, 4 filesdep +bytestring
Dependencies added: bytestring
Files
- CHANGELOG.md +0/−21
- ChangeLog.md +28/−0
- SimpleCabal.hs +70/−12
- simple-cabal.cabal +7/−6
− CHANGELOG.md
@@ -1,21 +0,0 @@-# Changelog--`simple-cabal` uses [PVP Versioning](https://pvp.haskell.org)--## 0.1.1 (2019-10-05)-- fix tryFindPackageDesc on Cabal 3--## 0.1.0 (2019-09-30)-- add buildDependencies, setupDependencies, testsuiteDependencies- (from cabal-rpm), and tryFindPackageDesc-- more deps compatibility: showVersion, depPkgName, exeDepName, pkgcfgDepName-- export PackageName, mkPackageName, unPackageName,- allBuildInfo, BuildInfo, FlagName & mkFlagName, licenseFiles-- no longer export: normal-- support Cabal-3 (ghc-8.8.1)--## 0.0.0.1 (2019-07-09)-- allow building with Cabal 1!--## 0.0.0 (2019-06-08)-- Initially version, mostly taken from cabal-rpm PackageUtils.hs
+ ChangeLog.md view
@@ -0,0 +1,28 @@+# Changelog++`simple-cabal` uses [PVP Versioning](https://pvp.haskell.org)++## 0.1.2 (2020-05-23)+- readFinalPackageDescription deprecates finalPackageDescription+- add makeFinalPackageDescription+- add parseFinalPackageDescription for Cabal-2.2++- export simpleParse+- export hasExes and hasLibs++## 0.1.1 (2019-10-05)+- fix tryFindPackageDesc on Cabal 3++## 0.1.0 (2019-09-30)+- add buildDependencies, setupDependencies, testsuiteDependencies+ (from cabal-rpm), and tryFindPackageDesc+- more deps compatibility: showVersion, depPkgName, exeDepName, pkgcfgDepName+- export PackageName, mkPackageName, unPackageName,+ allBuildInfo, BuildInfo, FlagName & mkFlagName, licenseFiles+- no longer export: normal+- support Cabal-3 (ghc-8.8.1)++## 0.0.0.1 (2019-07-09)+- allow building with Cabal 1!++## 0.0.0 (2019-06-08)+- Initially version, mostly taken from cabal-rpm PackageUtils.hs
SimpleCabal.hs view
@@ -2,7 +2,12 @@ module SimpleCabal ( findCabalFile,+ readFinalPackageDescription, finalPackageDescription,+#if MIN_VERSION_Cabal(2,2,0)+ parseFinalPackageDescription,+#endif+ makeFinalPackageDescription, getPackageId, -- dependencies, #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,4,0)@@ -16,6 +21,7 @@ BuildInfo (..), depPkgName, exeDepName, pkgcfgDepName, FlagName, mkFlagName,+ hasExes, hasLibs, #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,20,0) #else licenseFiles,@@ -27,6 +33,7 @@ readGenericPackageDescription, showPkgId, showVersion,+ simpleParse, tryFindPackageDesc ) where @@ -35,6 +42,9 @@ import Control.Applicative ((<$>)) #endif +#if MIN_VERSION_Cabal(2,2,0)+import qualified Data.ByteString.Char8 as B+#endif import Data.List (delete, nub) import Distribution.Compiler@@ -74,12 +84,13 @@ #endif extraLibs, #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0)- FlagName, + FlagName, mkFlagName, #else FlagName (..), #endif GenericPackageDescription(packageDescription),+ hasExes, hasLibs, #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0) mkFlagAssignment, #endif@@ -99,7 +110,8 @@ import Distribution.PackageDescription.Configuration (finalizePackageDescription) #endif #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0)-import Distribution.PackageDescription.Parsec (readGenericPackageDescription)+import Distribution.PackageDescription.Parsec+ (readGenericPackageDescription, parseGenericPackageDescriptionMaybe) #elif defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0) import Distribution.PackageDescription.Parse (readGenericPackageDescription) #else@@ -136,6 +148,8 @@ import Distribution.System (Platform (..), buildArch, buildOS) +import Distribution.Text (simpleParse)+ import Distribution.Verbosity (normal, #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0) #else@@ -164,7 +178,7 @@ -- -- Errors if more than one or no file found. ----- since @0.0.0.1@+-- @since 0.0.0.1 findCabalFile :: IO FilePath findCabalFile = do allCabals <- filesWithExtension "." ".cabal"@@ -180,7 +194,7 @@ -- | Get the package name-version from the .cabal file in the current directory. ----- since @0.0.0.1@+-- @since 0.0.0.1 getPackageId :: IO PackageIdentifier getPackageId = do gpd <- findCabalFile >>= readGenericPackageDescription normal@@ -193,28 +207,60 @@ readGenericPackageDescription = readPackageDescription #endif +#if MIN_VERSION_Cabal(2,2,0)+-- | only available with Cabal-2.2++--+-- @since 0.1.2+parseFinalPackageDescription :: [(FlagName, Bool)] -> B.ByteString+ -> IO (Maybe PackageDescription)+parseFinalPackageDescription flags cabalfile = do+ let mgenPkgDesc = parseGenericPackageDescriptionMaybe cabalfile+ case mgenPkgDesc of+ Nothing -> return Nothing+ Just genPkgDesc -> Just <$> makeFinalPackageDescription flags genPkgDesc+#endif+ -- | Generate PackageDescription from the specified .cabal file and flags. ----- since @0.0.0.1@+-- deprecated in favour of readFinalPackageDescription+--+-- @since 0.0.0.1 finalPackageDescription :: [(FlagName, Bool)] -> FilePath -> IO PackageDescription-finalPackageDescription flags cabalfile = do+finalPackageDescription = readFinalPackageDescription++-- | get PackageDescription from a cabal file+--+-- deprecates finalPackageDescription+--+-- @since 0.1.2+readFinalPackageDescription :: [(FlagName, Bool)] -> FilePath+ -> IO PackageDescription+readFinalPackageDescription flags cabalfile =+ readGenericPackageDescription normal cabalfile >>=+ makeFinalPackageDescription flags++-- | convert a GenericPackageDescription to a final PackageDescription+--+-- @since 0.1.2+makeFinalPackageDescription :: [(FlagName, Bool)] -> GenericPackageDescription+ -> IO PackageDescription+makeFinalPackageDescription flags genPkgDesc = do #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0) #else let defaultProgramDb = defaultProgramConfiguration #endif- genPkgDesc <- readGenericPackageDescription normal cabalfile compiler <- do #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,18,0)- (compiler, _, _) <- configCompilerEx+ (compiler, _, _) <- configCompilerEx #else- (compiler, _) <- configCompiler+ (compiler, _) <- configCompiler #endif- (Just GHC) Nothing Nothing defaultProgramDb normal+ (Just GHC) Nothing Nothing defaultProgramDb normal #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)- return (compilerInfo compiler)+ return (compilerInfo compiler) #else- return (compilerId compiler)+ return (compilerId compiler) #endif #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0) #else@@ -245,6 +291,7 @@ let self = pkgName $ package pkgDesc in delete self . nub . map depPkgName $ concatMap (targetBuildDepends . testBuildInfo) (testSuites pkgDesc) +-- | version string from PackageIdentifier packageVersion :: PackageIdentifier -> String packageVersion = #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0)@@ -253,6 +300,7 @@ showVersion . pkgVersion #endif +-- | convert PackageIdentifier to a displayable string showPkgId :: PackageIdentifier -> String showPkgId pkgid = #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0)@@ -268,6 +316,7 @@ #endif #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,2,0)+-- | render a Version showVersion :: Distribution.Version.Version -> String showVersion = prettyShow #endif@@ -278,6 +327,7 @@ mkFlagName = FlagName #endif +-- | Find cabal file tryFindPackageDesc :: FilePath -> IO FilePath tryFindPackageDesc = #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,20,0)@@ -291,29 +341,36 @@ #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,20,0) #else+-- | singleton list of license file licenseFiles :: PackageDescription -> [FilePath] licenseFiles pkgDesc = [licenseFile pkgDesc | licenseFile pkgDesc /= ""] #endif #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,4,0)+-- | List build dependencies buildDepends :: PackageDescription -> [Dependency] buildDepends = flip enabledBuildDepends defaultComponentRequestedSpec #endif #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0)+-- | name of legacy exe dep exeDepName :: LegacyExeDependency -> String exeDepName (LegacyExeDependency n _) = n +-- | pkgconfig dep name pkgcfgDepName :: PkgconfigDependency -> String pkgcfgDepName (PkgconfigDependency n _) = unPkgconfigName n #else+-- | PackageName of dependency depPkgName :: Dependency -> PackageName depPkgName (Dependency pn _) = pn +-- | name of dependency exeDepName :: Dependency -> String exeDepName = unPackageName . depPkgName +-- | name of dependency pkgcfgDepName :: Dependency -> String pkgcfgDepName = unPackageName . depPkgName #endif@@ -324,6 +381,7 @@ mkPackageName = PackageName #endif +-- | List of setup dependencies setupDependencies :: PackageDescription -- ^pkg description -> [PackageName] -- ^depends #if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,24,0)
simple-cabal.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.10 name: simple-cabal-version: 0.1.1+version: 0.1.2 synopsis: Cabal file wrapper library description: Find and read .cabal files, and a Cabal dependency compatibility layer.@@ -14,10 +14,10 @@ category: Distribution build-type: Simple extra-source-files: README.md- , CHANGELOG.md-tested-with: GHC == 8.8.1, GHC == 8.6.5, GHC == 8.4.4, GHC == 8.2.2,- GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3,- GHC == 7.4.2, GHC == 7.0.4+ , ChangeLog.md+tested-with: GHC == 8.10.1, GHC == 8.8.3, GHC == 8.6.5, GHC == 8.4.4,+ GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4,+ GHC == 7.6.3, GHC == 7.4.2, GHC == 7.0.4 source-repository head type: git@@ -25,9 +25,10 @@ library exposed-modules: SimpleCabal- + build-depends: base < 5,+ bytestring, Cabal, directory, filepath