packages feed

hpack 0.11.0 → 0.11.1

raw patch · 3 files changed

+56/−10 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Hpack.Config: renamePackage :: String -> Package -> Package

Files

hpack.cabal view
@@ -1,9 +1,9 @@--- This file has been generated from package.yaml by hpack version 0.10.0.+-- This file has been generated from package.yaml by hpack version 0.11.0. -- -- see: https://github.com/sol/hpack  name:           hpack-version:        0.11.0+version:        0.11.1 synopsis:       An alternative format for Haskell packages category:       Development homepage:       https://github.com/sol/hpack#readme
src/Hpack/Config.hs view
@@ -13,6 +13,8 @@ module Hpack.Config (   packageConfig , readPackageConfig+, renamePackage+, packageDependencies , package , section , Package(..)@@ -20,7 +22,6 @@ , AddSource(..) , GitUrl , GitRef-, packageDependencies , GhcOption , Section(..) , Library(..)@@ -29,6 +30,7 @@ , Flag(..) , SourceRepository(..) #ifdef TEST+, renameDependencies , HasFieldNames(..) , CaptureUnknownFields(..) , Empty(..)@@ -63,6 +65,31 @@ package :: String -> String -> Package package name version = Package name version Nothing Nothing Nothing Nothing Nothing Nothing [] [] [] Nothing Nothing Nothing [] [] [] Nothing Nothing [] [] [] +renamePackage :: String -> Package -> Package+renamePackage name package@Package{..} = package {+    packageName = name+  , packageExecutables = map (renameDependencies packageName name) packageExecutables+  , packageTests = map (renameDependencies packageName name) packageTests+  , packageBenchmarks = map (renameDependencies packageName name) packageBenchmarks+  }++renameDependencies :: String -> String -> Section a -> Section a+renameDependencies old new section@Section{..} = section {sectionDependencies = map rename sectionDependencies, sectionConditionals = map renameConditional sectionConditionals}+  where+    rename dep+      | dependencyName dep == old = dep {dependencyName = new}+      | otherwise = dep++    renameConditional :: Conditional -> Conditional+    renameConditional (Conditional condition then_ else_) = Conditional condition (renameDependencies old new then_) (renameDependencies old new <$> else_)++packageDependencies :: Package -> [Dependency]+packageDependencies Package{..} = nub . sortBy (comparing (lexicographically . dependencyName)) $+     (concatMap sectionDependencies packageExecutables)+  ++ (concatMap sectionDependencies packageTests)+  ++ (concatMap sectionDependencies packageBenchmarks)+  ++ maybe [] sectionDependencies packageLibrary+ section :: a -> Section a section a = Section a [] [] [] [] [] [] [] [] [] [] Nothing [] @@ -237,13 +264,6 @@ } deriving (Eq, Show, Generic)  instance HasFieldNames PackageConfig--packageDependencies :: Package -> [Dependency]-packageDependencies Package{..} = nub . sortBy (comparing (lexicographically . dependencyName)) $-     (concatMap sectionDependencies packageExecutables)-  ++ (concatMap sectionDependencies packageTests)-  ++ (concatMap sectionDependencies packageBenchmarks)-  ++ maybe [] sectionDependencies packageLibrary  instance FromJSON PackageConfig where   parseJSON value = handleNullValues <$> genericParseJSON_ value
test/Hpack/ConfigSpec.hs view
@@ -55,6 +55,32 @@  spec :: Spec spec = do+  describe "renamePackage" $ do+    it "renames a package" $ do+      renamePackage "bar" package `shouldBe` package {packageName = "bar"}++    it "renames dependencies on self" $ do+      let packageWithExecutable dependencies = package {packageExecutables = [(section $ executable "main" "Main.hs") {sectionDependencies = dependencies}]}+      renamePackage "bar" (packageWithExecutable ["foo"]) `shouldBe` (packageWithExecutable ["bar"]) {packageName = "bar"}++  describe "renameDependencies" $ do+    let sectionWithDeps dependencies = (section ()) {sectionDependencies = dependencies}++    it "renames dependencies" $ do+      renameDependencies "bar" "baz" (sectionWithDeps ["foo", "bar"]) `shouldBe` sectionWithDeps ["foo", "baz"]++    it "renames dependency in conditionals" $ do+      let sectionWithConditional dependencies = (section ()) {+              sectionConditionals = [+                Conditional {+                  conditionalCondition = "some condition"+                , conditionalThen = sectionWithDeps dependencies+                , conditionalElse = Just (sectionWithDeps dependencies)+                }+                ]+            }+      renameDependencies "bar" "baz" (sectionWithConditional ["foo", "bar"]) `shouldBe` sectionWithConditional ["foo", "baz"]+   describe "parseJSON" $ do     context "when parsing (CaptureUnknownFields Section a)" $ do       it "accepts dependencies" $ do