packages feed

cabal-bounds 0.4.1 → 0.5

raw patch · 7 files changed

+45/−136 lines, 7 filesdep +cabal-lensesPVP ok

version bump matches the API change (PVP)

Dependencies added: cabal-lenses

API changes (from Hackage documentation)

Files

cabal-bounds.cabal view
@@ -1,5 +1,5 @@ name: cabal-bounds-version: 0.4.1+version: 0.5 cabal-version: >=1.9.2 build-type: Simple license: BSD3@@ -178,6 +178,7 @@         unordered-containers >=0.2.3.3 && <0.3,         transformers >=0.3.0.0 && <0.4,         either >=4.1.1 && <4.2,+        cabal-lenses >=0.1 && <0.2,         Cabal >=1.18.0 && <1.21     exposed-modules:         CabalBounds.Args@@ -194,7 +195,6 @@         CabalBounds.Dependencies         CabalBounds.Drop         CabalBounds.Update-        CabalBounds.Lenses     ghc-options: -W   executable cabal-bounds
lib/CabalBounds/Dependencies.hs view
@@ -3,7 +3,7 @@ module CabalBounds.Dependencies    ( Dependencies(..)    , dependencies-   , filterDependencies+   , filterDependency    ) where  import Control.Lens@@ -28,12 +28,12 @@    = AllDependencies  -filterDependencies :: Dependencies -> Traversal' [Dependency] Dependency-filterDependencies AllDependencies =-   traversed+filterDependency :: Dependencies -> Traversal' Dependency Dependency+filterDependency AllDependencies =+   filtered (const True) -filterDependencies (OnlyDependencies deps) =-   traversed . filtered (\(Dependency (PackageName pkgName) _) -> pkgName `elem` deps)+filterDependency (OnlyDependencies deps) =+   filtered (\(Dependency (PackageName pkgName) _) -> pkgName `elem` deps) -filterDependencies (IgnoreDependencies deps) =-   traversed . filtered (\(Dependency (PackageName pkgName) _) -> pkgName `notElem` deps)+filterDependency (IgnoreDependencies deps) =+   filtered (\(Dependency (PackageName pkgName) _) -> pkgName `notElem` deps)
lib/CabalBounds/Drop.hs view
@@ -7,31 +7,24 @@ import Prelude hiding (drop) import Control.Lens import CabalBounds.Bound (DropBound(..))-import CabalBounds.Sections (Sections(..), dependenciesOf)-import CabalBounds.Dependencies (Dependencies, filterDependencies)-import qualified CabalBounds.Lenses as L+import CabalBounds.Dependencies (Dependencies, filterDependency)+import qualified CabalLenses as CL import Data.List (foldl') import Distribution.PackageDescription (GenericPackageDescription) import Distribution.Package (Dependency(..)) import Distribution.Version (mkVersionIntervals, fromVersionIntervals, asVersionIntervals, UpperBound(..), anyVersion)  -drop :: DropBound -> Sections -> Dependencies -> GenericPackageDescription -> GenericPackageDescription-drop bound AllSections deps pkgDescrp =-   pkgDescrp & L.allDependencies . filterDeps %~ dropFromDep-   where-      filterDeps  = filterDependencies deps-      dropFromDep = dropFromDependency bound---drop bound (Sections sections) deps pkgDescrp =+drop :: DropBound -> [CL.Section] -> Dependencies -> GenericPackageDescription -> GenericPackageDescription+drop bound sections deps pkgDescrp =    foldl' dropFromSection pkgDescrp sections    where       dropFromSection pkgDescrp section =-         pkgDescrp & dependenciesOf section . filterDeps %~ dropFromDep+         pkgDescrp & CL.dependencyIf condVars section . filterDep %~ dropFromDep -      filterDeps  = filterDependencies deps+      filterDep   = filterDependency deps       dropFromDep = dropFromDependency bound+      condVars    = CL.fromDefaults pkgDescrp   dropFromDependency :: DropBound -> Dependency -> Dependency
− lib/CabalBounds/Lenses.hs
@@ -1,55 +0,0 @@-{-# LANGUAGE TemplateHaskell, Rank2Types #-}--module CabalBounds.Lenses-   ( vbranch-   , vtags-   , allDependencies-   , dependenciesOfLib-   , dependenciesOfAllExes-   , dependenciesOfExe-   , dependenciesOfAllTests-   , dependenciesOfTest-   , dependenciesOfAllBenchms-   , dependenciesOfBenchm-   ) where--import Distribution.PackageDescription-import Distribution.Package-import Distribution.Version-import Control.Lens-import Data.Data.Lens--makeLensesFor [ ("condLibrary"    , "condLibraryL")-              , ("condExecutables", "condExecutablesL")-              , ("condTestSuites" , "condTestSuitesL")-              , ("condBenchmarks" , "condBenchmarksL")-              ] ''GenericPackageDescription--makeLensesFor [ ("versionBranch", "vbranch")-              , ("versionTags"  , "vtags")-              ] ''Version---allDependencies :: Traversal' GenericPackageDescription [Dependency]-allDependencies = biplate--dependenciesOfLib :: Traversal' GenericPackageDescription [Dependency]-dependenciesOfLib = condLibraryL . _Just . biplate--dependenciesOfAllExes :: Traversal' GenericPackageDescription [Dependency]-dependenciesOfAllExes = condExecutablesL . traversed . _2 . biplate--dependenciesOfExe :: String -> Traversal' GenericPackageDescription [Dependency]-dependenciesOfExe exe = condExecutablesL . traversed . filtered ((== exe) . fst) . _2 . biplate--dependenciesOfAllTests :: Traversal' GenericPackageDescription [Dependency]-dependenciesOfAllTests = condTestSuitesL . traversed . _2 . biplate--dependenciesOfTest :: String -> Traversal' GenericPackageDescription [Dependency]-dependenciesOfTest test = condTestSuitesL . traversed . filtered ((== test) . fst) . _2 . biplate--dependenciesOfAllBenchms :: Traversal' GenericPackageDescription [Dependency]-dependenciesOfAllBenchms = condBenchmarksL . traversed . _2 . biplate--dependenciesOfBenchm :: String -> Traversal' GenericPackageDescription [Dependency]-dependenciesOfBenchm benchm = condBenchmarksL . traversed . filtered ((== benchm) . fst) . _2 . biplate
lib/CabalBounds/Main.hs view
@@ -26,14 +26,14 @@ cabalBounds args@A.Drop {} =    leftToJust <$> runEitherT (do       pkgDescrp <- packageDescription $ A.cabalFile args-      let pkgDescrp' = D.drop (B.boundOfDrop args) (S.sections args) (DP.dependencies args) pkgDescrp+      let pkgDescrp' = D.drop (B.boundOfDrop args) (S.sections args pkgDescrp) (DP.dependencies args) pkgDescrp       liftIO $ writeFile (A.outputFile args) (showGenericPackageDescription pkgDescrp'))  cabalBounds args@A.Update {} =    leftToJust <$> runEitherT (do       pkgDescrp <- packageDescription $ A.cabalFile args       buildInfo <- localBuildInfo $ A.setupConfigFile args-      let pkgDescrp' = U.update (B.boundOfUpdate args) (S.sections args) (DP.dependencies args) pkgDescrp buildInfo+      let pkgDescrp' = U.update (B.boundOfUpdate args) (S.sections args pkgDescrp) (DP.dependencies args) pkgDescrp buildInfo       liftIO $ writeFile (A.outputFile args) (showGenericPackageDescription pkgDescrp'))  
lib/CabalBounds/Sections.hs view
@@ -1,45 +1,22 @@-{-# LANGUAGE PatternGuards, Rank2Types #-}+{-# LANGUAGE PatternGuards #-}  module CabalBounds.Sections-   ( Sections(..)-   , Section(..)-   , sections-   , dependenciesOf+   ( sections    ) where -import Control.Lens-import Distribution.PackageDescription (GenericPackageDescription(..))-import Distribution.Package (Dependency(..))+import Distribution.PackageDescription (GenericPackageDescription) import CabalBounds.Args (Args) import qualified CabalBounds.Args as A-import qualified CabalBounds.Lenses as L--data Sections = Sections [Section]-              | AllSections-              deriving (Show, Eq)---- | A section of the cabal file.-data Section = Library-             | Executable String-             | TestSuite String-             | Benchmark String-             deriving (Show, Eq)+import qualified CabalLenses as CL -sections :: Args -> Sections-sections args-   | ts@(_:_) <- concat [ [ Library | A.library args ]-                        , map Executable (A.executable args)-                        , map TestSuite (A.testSuite args)-                        , map Benchmark (A.benchmark args)+sections :: Args -> GenericPackageDescription -> [CL.Section]+sections args pkgDescrp+   | ss@(_:_) <- concat [ [ CL.Library | A.library args ]+                        , map CL.Executable (A.executable args)+                        , map CL.TestSuite (A.testSuite args)+                        , map CL.Benchmark (A.benchmark args)                         ]-   = Sections ts+   = ss     | otherwise-   = AllSections---dependenciesOf :: Section -> Traversal' GenericPackageDescription [Dependency]-dependenciesOf Library            = L.dependenciesOfLib-dependenciesOf (Executable exe)   = L.dependenciesOfExe exe-dependenciesOf (TestSuite test)   = L.dependenciesOfTest test-dependenciesOf (Benchmark benchm) = L.dependenciesOfBenchm benchm+   = CL.allSections pkgDescrp
lib/CabalBounds/Update.hs view
@@ -10,10 +10,9 @@ import qualified Distribution.InstalledPackageInfo as PI import Control.Lens import CabalBounds.Bound (UpdateBound(..))-import CabalBounds.Sections (Sections(..), dependenciesOf)-import CabalBounds.Dependencies (Dependencies, filterDependencies)+import CabalBounds.Dependencies (Dependencies, filterDependency) import CabalBounds.VersionComp (VersionComp(..))-import qualified CabalBounds.Lenses as L+import qualified CabalLenses as CL import Data.List (foldl') import qualified Data.HashMap.Strict as HM import Data.Maybe (fromMaybe)@@ -22,21 +21,16 @@ type InstalledPackages = HM.HashMap PkgName V.Version  -update :: UpdateBound -> Sections -> Dependencies -> D.GenericPackageDescription -> BI.LocalBuildInfo -> D.GenericPackageDescription-update bound AllSections deps pkgDescrp buildInfo =-   pkgDescrp & L.allDependencies . filterDeps %~ updateDep-   where-      filterDeps = filterDependencies deps-      updateDep  = updateDependency bound (installedPackages buildInfo)--update bound (Sections sections) deps pkgDescrp buildInfo =+update :: UpdateBound -> [CL.Section] -> Dependencies -> D.GenericPackageDescription -> BI.LocalBuildInfo -> D.GenericPackageDescription+update bound sections deps pkgDescrp buildInfo =    foldl' updateSection pkgDescrp sections    where       updateSection pkgDescrp section =-         pkgDescrp & dependenciesOf section . filterDeps %~ updateDep+         pkgDescrp & CL.dependencyIf condVars section . filterDep %~ updateDep -      filterDeps = filterDependencies deps-      updateDep  = updateDependency bound (installedPackages buildInfo)+      filterDep = filterDependency deps+      updateDep = updateDependency bound (installedPackages buildInfo)+      condVars  = CL.fromDefaults pkgDescrp   updateDependency :: UpdateBound -> InstalledPackages -> P.Dependency -> P.Dependency@@ -81,20 +75,20 @@  compOf :: VersionComp -> V.Version -> V.Version Major1 `compOf` version =-   version & L.vbranch %~ take 1-           & L.vtags   .~ []+   version & CL.versionBranchL %~ take 1+           & CL.versionTagsL   .~ []  Major2 `compOf` version =-   version & L.vbranch %~ take 2-           & L.vtags   .~ []+   version & CL.versionBranchL %~ take 2+           & CL.versionTagsL   .~ []  Minor `compOf` version =-   version & L.vtags .~ []+   version & CL.versionTagsL .~ []   nextVersion :: V.Version -> V.Version nextVersion version =-   version & L.vbranch %~ increaseLastComp+   version & CL.versionBranchL %~ increaseLastComp    where       increaseLastComp = reverse . (& ix 0 %~ (+ 1)) . reverse