packages feed

simple-cabal 0.1.3.1 → 0.2.0

raw patch · 4 files changed

+106/−52 lines, 4 filesdep +safe

Dependencies added: safe

Files

ChangeLog.md view
@@ -2,6 +2,15 @@  `simple-cabal` uses [PVP Versioning](https://pvp.haskell.org) +## 0.2.0 (2025-09-17)+- support Cabal 3.14:+- readGenericPackageDescription' replaces readGenericPackageDescription+  (which changed type for Cabal >= 3.14)+- tryFindPackageDesc' replaces tryFindPackageDesc to allow for Cabal >= 3.14+- add simpleParsec (Cabal >= 2.2)+- export UnqualComponentName, mkUnqualComponentName (Cabal >= 2.0)+- export unUnqualComponentName+ ## 0.1.3 (2020-10-04) - add allLibraries (from Cabal>= 2.0) and Library - deprecate allBuildInfo
README.md view
@@ -5,8 +5,10 @@ [![Stackage Lts](http://stackage.org/package/simple-cabal/badge/lts)](http://stackage.org/lts/package/simple-cabal) [![Stackage Nightly](http://stackage.org/package/simple-cabal/badge/nightly)](http://stackage.org/nightly/package/simple-cabal) -A small compatibility wrapper over Cabal.+A small compatibility wrapper library over Cabal. +## Examples+ ``` pkgid <- getPackageId putStrLn $ showPkgId pkgid@@ -14,5 +16,11 @@  ``` cabalfile <- findCabalFile-genPkgDesc <- readGenericPackageDescription normal cabalfile+genPkgDesc <- readGenericPackageDescription' normal cabalfile ```++## Contribute++simple-cabal is distributed under a BSD3 license.++Contributions are welcome at <https://github.com/juhp/simple-cabal>
SimpleCabal.hs view
@@ -10,7 +10,7 @@   makeFinalPackageDescription,   getPackageId, --  dependencies,-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,4,0)+#if MIN_VERSION_Cabal(2,4,0)   buildDepends, #endif   buildDependencies,@@ -22,24 +22,30 @@   BuildInfo (..),   Library(..),   depPkgName, exeDepName, pkgcfgDepName,+#if MIN_VERSION_Cabal(2,0,0)+  UnqualComponentName, mkUnqualComponentName,+#endif+  unUnqualComponentName,   FlagName, mkFlagName,   hasExes, hasLibs,-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,20,0)-#else+#if !MIN_VERSION_Cabal(1,20,0)   licenseFiles, #endif   PackageDescription (..),   PackageIdentifier (..),   PackageName, mkPackageName, unPackageName,   packageName, packageVersion,-  readGenericPackageDescription,+  readGenericPackageDescription',   showPkgId,   showVersion,   simpleParse,-  tryFindPackageDesc+#if MIN_VERSION_Cabal(2,2,0)+  simpleParsec,+#endif+  tryFindPackageDesc'   ) where -#if (defined(MIN_VERSION_base) && MIN_VERSION_base(4,8,0))+#if MIN_VERSION_base(4,8,0) #else import Control.Applicative ((<$>)) #endif@@ -55,23 +61,23 @@ import Distribution.Compiler import Distribution.Package  (                               packageName,-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(1,22,0)-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0)+#if MIN_VERSION_Cabal(1,22,0)+#if MIN_VERSION_Cabal(2,0,0)                               depPkgName,                               mkPackageName,                               unPackageName,                               unPkgconfigName,-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,4,0)+#if MIN_VERSION_Cabal(2,4,0)                               Dependency, #endif #else #endif #endif-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0)+#if MIN_VERSION_Cabal(2,0,0) #else                               Dependency (..), #endif-#if defined(MIN_VERSION_Cabal) && MIN_VERSION_Cabal(2,0,0)+#if MIN_VERSION_Cabal(2,0,0)                               PackageName, #else                               PackageName (..),@@ -115,22 +121,29 @@ import Distribution.Types.ComponentRequestedSpec (defaultComponentRequestedSpec) import Distribution.Types.LegacyExeDependency (LegacyExeDependency (..)) import Distribution.Types.PkgconfigDependency (PkgconfigDependency (..))+import Distribution.Types.UnqualComponentName (UnqualComponentName(),+                                               mkUnqualComponentName,+                                               unUnqualComponentName+                                              ) #else import Distribution.PackageDescription.Configuration (finalizePackageDescription) #endif #if MIN_VERSION_Cabal(2,2,0)-import Distribution.PackageDescription.Parsec-       (-#if !MIN_VERSION_Cabal(3,8,0)-         readGenericPackageDescription,-#endif-         parseGenericPackageDescriptionMaybe)+import qualified Distribution.PackageDescription.Parsec as DPP #elif MIN_VERSION_Cabal(2,0,0)-import Distribution.PackageDescription.Parse (readGenericPackageDescription)+import qualified Distribution.PackageDescription.Parse as DPP #else-import Distribution.PackageDescription.Parse (readPackageDescription)+import qualified Distribution.PackageDescription.Parse as DPP #endif +#if MIN_VERSION_Cabal(3,0,0)+import Distribution.Parsec (simpleParsec)+#else+#if MIN_VERSION_Cabal(2,2,0)+import Distribution.Parsec.Class (simpleParsec)+#endif+#endif+ import Distribution.Simple.Compiler ( #if MIN_VERSION_Cabal(1,22,0)     compilerInfo@@ -146,7 +159,7 @@ #endif     ) #if MIN_VERSION_Cabal(3,8,0)-import Distribution.Simple.PackageDescription (readGenericPackageDescription)+import qualified Distribution.Simple.PackageDescription as DSP #endif #if MIN_VERSION_Cabal(2,0,0) --import Distribution.Simple.BuildToolDepends (getAllToolDependencies)@@ -154,6 +167,9 @@ #else import Distribution.Simple.Program   (defaultProgramConfiguration) #endif+#if MIN_VERSION_Cabal(3,14,0)+import Distribution.Utils.Path (interpretSymbolicPath, makeSymbolicPath)+#endif import qualified Distribution.Simple.Utils as DSU ( #if MIN_VERSION_Cabal(1,20,0)     tryFindPackageDesc@@ -161,15 +177,11 @@     findPackageDesc #endif     )- import Distribution.System (Platform (..), buildArch, buildOS)  import Distribution.Text (simpleParse) -import Distribution.Verbosity (normal,-#if !MIN_VERSION_Cabal(2,0,0)-                               Verbosity-#endif+import Distribution.Verbosity (normal, Verbosity                               )  #if MIN_VERSION_Cabal(2,2,0)@@ -186,6 +198,7 @@ import qualified Distribution.Version (Version) #endif +import Safe (headMay) import System.Directory (getDirectoryContents) import System.FilePath (takeExtension) @@ -204,7 +217,7 @@   where     filesWithExtension :: FilePath -> String -> IO [FilePath]     filesWithExtension dir ext =-      filter (\ f -> takeExtension f == ext && head f /= '.')+      filter (\ f -> takeExtension f == ext && headMay f /= Just '.')       <$> getDirectoryContents dir  -- | Get the package name-version from the .cabal file in the current directory.@@ -212,15 +225,9 @@ -- @since 0.0.0.1 getPackageId :: IO PackageIdentifier getPackageId = do-  gpd <- findCabalFile >>= readGenericPackageDescription normal+  gpd <- findCabalFile >>= readGenericPackageDescription' normal   return $ package $ packageDescription gpd -#if !MIN_VERSION_Cabal(2,0,0)-readGenericPackageDescription :: Verbosity-                              -> FilePath -> IO GenericPackageDescription-readGenericPackageDescription = readPackageDescription-#endif- #if MIN_VERSION_Cabal(2,2,0) -- | only available with Cabal-2.2+ --@@ -228,7 +235,7 @@ parseFinalPackageDescription :: [(FlagName, Bool)] -> B.ByteString                           -> IO (Maybe PackageDescription) parseFinalPackageDescription flags cabalfile = do-  let mgenPkgDesc = parseGenericPackageDescriptionMaybe cabalfile+  let mgenPkgDesc = DPP.parseGenericPackageDescriptionMaybe cabalfile   case mgenPkgDesc of     Nothing -> return Nothing     Just genPkgDesc -> Just <$> makeFinalPackageDescription flags genPkgDesc@@ -243,6 +250,27 @@                           -> IO PackageDescription finalPackageDescription = readFinalPackageDescription +-- | Legacy version of readGenericPackageDescription+-- which doesn't use SymbolicPath (or workdir)+--+-- since 0.2.0+readGenericPackageDescription' :: Verbosity -> FilePath -> IO GenericPackageDescription+readGenericPackageDescription' verb file =+#if MIN_VERSION_Cabal(3,8,0)+  DSP.readGenericPackageDescription verb+#elif MIN_VERSION_Cabal(2,0,0)+  DPP.readGenericPackageDescription verb+#else+  DPP.readPackageDescription verb+#endif+--  DPP.readGenericPackageDescription verb+#if MIN_VERSION_Cabal(3,14,0)+    Nothing $+    makeSymbolicPath+#endif+    file++ -- | get PackageDescription from a cabal file -- -- deprecates finalPackageDescription@@ -251,7 +279,7 @@ readFinalPackageDescription :: [(FlagName, Bool)] -> FilePath                             -> IO PackageDescription readFinalPackageDescription flags cabalfile =-  readGenericPackageDescription normal cabalfile >>=+  readGenericPackageDescription' normal cabalfile >>=   makeFinalPackageDescription flags  -- | convert a GenericPackageDescription to a final PackageDescription@@ -337,16 +365,19 @@ mkFlagName = FlagName #endif --- | Find cabal file-tryFindPackageDesc :: FilePath -> IO FilePath-tryFindPackageDesc =-#if MIN_VERSION_Cabal(1,20,0)-  DSU.tryFindPackageDesc-#if MIN_VERSION_Cabal(3,0,0)-    normal-#endif+-- | Find cabal file in current directory+--+-- since 0.2.0+tryFindPackageDesc' :: IO FilePath+tryFindPackageDesc' =+#if MIN_VERSION_Cabal(3,14,0)+  interpretSymbolicPath Nothing <$> DSU.tryFindPackageDesc normal Nothing+#elif MIN_VERSION_Cabal(3,0,0)+  DSU.tryFindPackageDesc normal "."+#elif MIN_VERSION_Cabal(1,20,0)+  DSU.tryFindPackageDesc "." #else-  DSU.findPackageDesc+  DSU.findPackageDesc "." #endif  #if !MIN_VERSION_Cabal(1,20,0)@@ -382,6 +413,10 @@ -- | name of dependency pkgcfgDepName :: Dependency -> String pkgcfgDepName = unPackageName . depPkgName++-- | name of unqualified component+unUnqualComponentName :: String -> String+unUnqualComponentName = id #endif  #if !MIN_VERSION_Cabal(2,0,0)
simple-cabal.cabal view
@@ -1,7 +1,7 @@ cabal-version:       >= 1.10 name:                simple-cabal-version:             0.1.3.1-synopsis:            Cabal file wrapper library+version:             0.2.0+synopsis:            Cabal compatibility wrapper library description:         Find and read .cabal files, and                      a Cabal dependency compatibility layer. homepage:            https://github.com/juhp/simple-cabal@@ -10,14 +10,15 @@ license-file:        LICENSE author:              Jens Petersen maintainer:          juhpetersen@gmail.com-copyright:           2019-2020,2022 Jens Petersen+copyright:           2019-2020,2022-2023,2025 Jens Petersen category:            Distribution build-type:          Simple extra-source-files:  README.md                    , ChangeLog.md-tested-with:         GHC == 9.0.2, GHC == 9.2.5, GHC == 9.4.3+tested-with:         GHC == 9.12.2, GHC == 9.10.2, GHC == 9.8.4,+                     GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.7,                      GHC == 8.10.7, GHC == 8.8.4, 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 == 8.2.2, GHC == 8.0.2  source-repository head   type:                git@@ -30,7 +31,8 @@                        bytestring,                        Cabal,                        directory,-                       filepath+                       filepath,+                       safe    default-language:    Haskell2010