cabal-bounds 0.8.5 → 0.8.6
raw patch · 6 files changed
+34/−57 lines, 6 filesdep ~cabal-lensesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: cabal-lenses
API changes (from Hackage documentation)
Files
- CHANGELOG +5/−0
- cabal-bounds.cabal +3/−2
- lib/CabalBounds/Drop.hs +3/−13
- lib/CabalBounds/Dump.hs +5/−7
- lib/CabalBounds/Update.hs +17/−34
- lib/CabalBounds/VersionComp.hs +1/−1
CHANGELOG view
@@ -1,3 +1,8 @@+0.8.6+-----+* Build/tested with GHC 7.8.3+* Simplified implementation+ 0.8.5 ----- * Raise upper bounds of dependencies
cabal-bounds.cabal view
@@ -1,5 +1,5 @@ name: cabal-bounds-version: 0.8.5+version: 0.8.6 cabal-version: >=1.9.2 build-type: Simple license: BSD3@@ -46,6 +46,7 @@ > $ cabal-bounds drop --executable=blub myproject.cabal category: Utils, Development author: Daniel Trstenjak+tested-with: GHC ==7.6.2 GHC ==7.6.3 GHC ==7.8.3 extra-source-files: README.md CHANGELOG@@ -72,7 +73,7 @@ unordered-containers >=0.2.3.3 && <0.3, transformers >=0.3.0.0 && <0.5, either >=4.1.1 && <4.4,- cabal-lenses ==0.3.*,+ cabal-lenses ==0.4.*, Cabal >=1.18.0 && <1.21 exposed-modules: CabalBounds.Args
lib/CabalBounds/Drop.hs view
@@ -12,7 +12,7 @@ import Data.List (foldl') import Distribution.PackageDescription (GenericPackageDescription) import Distribution.Package (Dependency(..))-import Distribution.Version (mkVersionIntervals, fromVersionIntervals, asVersionIntervals, UpperBound(..), anyVersion)+import Distribution.Version (UpperBound(..), anyVersion) drop :: DropBound -> [CL.Section] -> Dependencies -> GenericPackageDescription -> GenericPackageDescription@@ -28,15 +28,5 @@ dropFromDependency :: DropBound -> Dependency -> Dependency-dropFromDependency DropUpper (Dependency pkgName versionRange) = Dependency pkgName versionRange'- where- versionRange'- | Just vi <- mkVersionIntervals intervals'- = fromVersionIntervals vi-- | otherwise- = versionRange-- intervals' = map (& _2 .~ NoUpperBound) (asVersionIntervals versionRange)--dropFromDependency DropBoth (Dependency pkgName _) = Dependency pkgName anyVersion+dropFromDependency DropUpper dep = dep & CL.versionRange . CL.intervals . traversed . CL.upperBound .~ NoUpperBound+dropFromDependency DropBoth dep = dep & CL.versionRange .~ anyVersion
lib/CabalBounds/Dump.hs view
@@ -4,7 +4,6 @@ ) where import Distribution.PackageDescription (GenericPackageDescription)-import qualified Distribution.Version as V import qualified Data.HashMap.Strict as HM import Data.List (foldl') import Data.Maybe (fromMaybe)@@ -22,13 +21,12 @@ addLibsFromPkgDescrp libs pkgDescrp = foldl' addLibFromDep libs (pkgDescrp ^.. CL.allDependency) addLibFromDep libs dep- | depLowerBound /= CL.noLowerBound- = HM.insertWith min depPkgName lowerVersionBranch libs+ | lowerBound_ /= CL.noLowerBound+ = HM.insertWith min pkgName_ versionBranch_ libs | otherwise = libs where- depPkgName = dep ^. CL.depPackageName . CL.pkgNameString-- depLowerBound@(V.LowerBound (V.Version { V.versionBranch = lowerVersionBranch }) _) =- fromMaybe CL.noLowerBound (dep ^? CL.depVersionRange . CL.rangeToIntervals . _head . CL.lowerBound)+ pkgName_ = dep ^. CL.packageName . _Wrapped+ versionBranch_ = lowerBound_ ^. CL.version . CL.versionBranchL+ lowerBound_ = fromMaybe CL.noLowerBound (dep ^? CL.versionRange . CL.intervals . _head . CL.lowerBound)
lib/CabalBounds/Update.hs view
@@ -7,6 +7,7 @@ import qualified Distribution.Package as P import qualified Distribution.Version as V import Control.Lens+import Control.Applicative ((<$>)) import CabalBounds.Bound (UpdateBound(..)) import CabalBounds.Dependencies (Dependencies(..), filterDependency) import CabalBounds.VersionComp (VersionComp(..))@@ -15,7 +16,6 @@ import qualified Data.HashMap.Strict as HM import Data.Maybe (fromMaybe) -type PkgName = String type LibName = String type LibVersion = V.Version type Libraries = HM.HashMap LibName LibVersion@@ -39,19 +39,16 @@ if ifMissing && lowerBound_ /= CL.noLowerBound then Nothing else do- version <- HM.lookup pkgName_ libs- let newLowerVersion = comp `compOf` version+ lowerVersion <- HM.lookup pkgName_ libs+ let newLowerVersion = comp `compOf` lowerVersion newLowerBound = V.LowerBound newLowerVersion V.InclusiveBound- vrange = fromMaybe (V.orLaterVersion newLowerVersion)- (modifyVersionIntervals (updateLower newLowerBound) versionRange_)- return $ mkDependency pkgName_ vrange+ newIntervals = (versionRange_ ^. CL.intervals) & _head . CL.lowerBound .~ newLowerBound+ vrange = fromMaybe (V.orLaterVersion newLowerVersion) (mkVersionRange newIntervals)+ return $ dep & CL.versionRange .~ vrange where- updateLower newLowerBound [] = [(newLowerBound, V.NoUpperBound)]- updateLower newLowerBound intervals = intervals & _head . CL.lowerBound .~ newLowerBound-- pkgName_ = pkgName dep- versionRange_ = versionRange dep- lowerBound_ = fromMaybe CL.noLowerBound $ V.asVersionIntervals versionRange_ ^? _head . CL.lowerBound+ pkgName_ = dep ^. CL.packageName . _Wrapped+ versionRange_ = dep ^. CL.versionRange+ lowerBound_ = fromMaybe CL.noLowerBound $ versionRange_ ^? CL.intervals . _head . CL.lowerBound updateDependency (UpdateUpper comp ifMissing) libs dep = fromMaybe dep $@@ -61,25 +58,19 @@ upperVersion <- HM.lookup pkgName_ libs let newUpperVersion = comp `compOf` upperVersion newUpperBound = V.UpperBound (nextVersion newUpperVersion) V.ExclusiveBound- vrange <- modifyVersionIntervals (updateUpper newUpperBound) versionRange_- return $ mkDependency pkgName_ vrange+ newIntervals = (versionRange_ ^. CL.intervals) & _last . CL.upperBound .~ newUpperBound+ vrange = fromMaybe (V.earlierVersion newUpperVersion) (mkVersionRange newIntervals)+ return $ dep & CL.versionRange .~ vrange where- versionRange_ = versionRange dep- pkgName_ = pkgName dep- upperBound_ = fromMaybe V.NoUpperBound $ V.asVersionIntervals versionRange_ ^? _head . CL.upperBound-- updateUpper newUpperBound [] = [(CL.noLowerBound, newUpperBound)]- updateUpper newUpperBound intervals = intervals & _last . CL.upperBound .~ newUpperBound+ versionRange_ = dep ^. CL.versionRange+ pkgName_ = dep ^. CL.packageName . _Wrapped+ upperBound_ = fromMaybe V.NoUpperBound $ versionRange_ ^? CL.intervals . _last . CL.upperBound updateDependency (UpdateBoth lowerComp upperComp ifMissing) libs dep = updateDependency (UpdateLower lowerComp ifMissing) libs $ updateDependency (UpdateUpper upperComp ifMissing) libs dep -modifyVersionIntervals :: ([V.VersionInterval] -> [V.VersionInterval]) -> V.VersionRange -> Maybe V.VersionRange-modifyVersionIntervals f = fmap V.fromVersionIntervals . V.mkVersionIntervals . f . V.asVersionIntervals-- compOf :: VersionComp -> V.Version -> V.Version Major1 `compOf` version = version & CL.versionBranchL %~ (take 1 . ensureMinimalVersionBranch Major1)@@ -111,13 +102,5 @@ nextVersion version = version & CL.versionBranchL . _last %~ (+ 1) -pkgName :: P.Dependency -> PkgName-pkgName (P.Dependency (P.PackageName name) _) = name---versionRange :: P.Dependency -> V.VersionRange-versionRange (P.Dependency _ vrange) = vrange---mkDependency :: PkgName -> V.VersionRange -> P.Dependency-mkDependency name = P.Dependency (P.PackageName name)+mkVersionRange :: [V.VersionInterval] -> Maybe V.VersionRange+mkVersionRange vis = V.fromVersionIntervals <$> V.mkVersionIntervals vis
lib/CabalBounds/VersionComp.hs view
@@ -6,7 +6,7 @@ , defaultUpperComp ) where -import Data.Data (Data(..), Typeable(..))+import Data.Data (Data(..), Typeable) -- | The component of a version number A.B.C -> Major1.Major2.Minor data VersionComp = Major1