{-# LANGUAGE CPP #-} module HsDev.Project.Compat ( showVer, componentName, testSuiteEnabled, flattenCondTree, parsePackageDesc ) where import Data.Maybe (maybeToList) import qualified Distribution.PackageDescription as PD import Distribution.PackageDescription.Parse import Distribution.Version (Version) import Distribution.Text (display) #if MIN_VERSION_Cabal(2,0,0) import Distribution.Types.CondTree #else import Distribution.PackageDescription (CondTree(..)) #endif #if MIN_VERSION_Cabal(2,0,0) import Distribution.Types.UnqualComponentName #else import Data.Version (showVersion) #endif showVer :: Version -> String #if MIN_VERSION_Cabal(2,0,0) showVer = display #else showVer = showVersion #endif #if MIN_VERSION_Cabal(2,0,0) componentName :: UnqualComponentName -> String componentName = unUnqualComponentName #else componentName :: String -> String componentName = id #endif testSuiteEnabled :: PD.TestSuite -> Bool #if MIN_VERSION_Cabal(2,0,0) testSuiteEnabled _ = True #else testSuiteEnabled = PD.testEnabled #endif flattenCondTree :: Monoid a => (c -> a -> a) -> CondTree v c a -> a flattenCondTree f (PD.CondNode x cs cmps) = f cs x `mappend` mconcat (concatMap flattenBranch cmps) where #if MIN_VERSION_Cabal(2,0,0) flattenBranch (CondBranch _ t mb) = go t mb #else flattenBranch (_, t, mb) = go t mb #endif go t mb = flattenCondTree f t : map (flattenCondTree f) (maybeToList mb) parsePackageDesc :: String -> ParseResult PD.GenericPackageDescription #if MIN_VERSION_Cabal(2,0,0) parsePackageDesc = parseGenericPackageDescription #else parsePackageDesc = parsePackageDescription #endif