packages feed

cabal-gild 1.7.0.2 → 1.8.0.0

raw patch · 13 files changed

+157/−37 lines, 13 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- CabalGild.Unstable.Type.Mixin: sortIncludeRenaming :: IncludeRenaming -> IncludeRenaming
- CabalGild.Unstable.Type.Mixin: sortMixin :: Mixin -> Mixin
- CabalGild.Unstable.Type.Mixin: sortModuleRenaming :: ModuleRenaming -> ModuleRenaming
+ CabalGild.Unstable.Extra.IncludeRenaming: sort :: IncludeRenaming -> IncludeRenaming
+ CabalGild.Unstable.Extra.LibraryName: toCaseFold :: LibraryName -> LibraryName
+ CabalGild.Unstable.Extra.Mixin: sort :: Mixin -> Mixin
+ CabalGild.Unstable.Extra.Mixin: toCaseFold :: Mixin -> Mixin
+ CabalGild.Unstable.Extra.ModuleName: toCaseFold :: ModuleName -> ModuleName
+ CabalGild.Unstable.Extra.ModuleRenaming: sort :: ModuleRenaming -> ModuleRenaming
+ CabalGild.Unstable.Extra.PackageName: toCaseFold :: PackageName -> PackageName
+ CabalGild.Unstable.Extra.String: toCaseFold :: String -> String
+ CabalGild.Unstable.Extra.UnqualComponentName: toCaseFold :: UnqualComponentName -> UnqualComponentName

Files

cabal-gild.cabal view
@@ -11,7 +11,7 @@ maintainer: Taylor Fausak name: cabal-gild synopsis: Formats package descriptions.-version: 1.7.0.2+version: 1.8.0.0  source-repository head   type: git@@ -98,11 +98,17 @@     CabalGild.Unstable.Extra.Field     CabalGild.Unstable.Extra.FieldLine     CabalGild.Unstable.Extra.FilePath+    CabalGild.Unstable.Extra.IncludeRenaming+    CabalGild.Unstable.Extra.LibraryName     CabalGild.Unstable.Extra.List+    CabalGild.Unstable.Extra.Mixin     CabalGild.Unstable.Extra.ModuleName+    CabalGild.Unstable.Extra.ModuleRenaming     CabalGild.Unstable.Extra.Name+    CabalGild.Unstable.Extra.PackageName     CabalGild.Unstable.Extra.SectionArg     CabalGild.Unstable.Extra.String+    CabalGild.Unstable.Extra.UnqualComponentName     CabalGild.Unstable.Main     CabalGild.Unstable.Type.Block     CabalGild.Unstable.Type.Chunk
+ source/library/CabalGild/Unstable/Extra/IncludeRenaming.hs view
@@ -0,0 +1,11 @@+module CabalGild.Unstable.Extra.IncludeRenaming where++import qualified CabalGild.Unstable.Extra.ModuleRenaming as ModuleRenaming+import qualified Distribution.Types.IncludeRenaming as IncludeRenaming++sort :: IncludeRenaming.IncludeRenaming -> IncludeRenaming.IncludeRenaming+sort x =+  IncludeRenaming.IncludeRenaming+    { IncludeRenaming.includeProvidesRn = ModuleRenaming.sort $ IncludeRenaming.includeProvidesRn x,+      IncludeRenaming.includeRequiresRn = ModuleRenaming.sort $ IncludeRenaming.includeRequiresRn x+    }
+ source/library/CabalGild/Unstable/Extra/LibraryName.hs view
@@ -0,0 +1,9 @@+module CabalGild.Unstable.Extra.LibraryName where++import qualified CabalGild.Unstable.Extra.UnqualComponentName as UnqualComponentName+import qualified Distribution.Types.LibraryName as LibraryName++toCaseFold :: LibraryName.LibraryName -> LibraryName.LibraryName+toCaseFold ln = case ln of+  LibraryName.LMainLibName -> LibraryName.LMainLibName+  LibraryName.LSubLibName uqn -> LibraryName.LSubLibName $ UnqualComponentName.toCaseFold uqn
+ source/library/CabalGild/Unstable/Extra/Mixin.hs view
@@ -0,0 +1,21 @@+module CabalGild.Unstable.Extra.Mixin where++import qualified CabalGild.Unstable.Extra.IncludeRenaming as IncludeRenaming+import qualified CabalGild.Unstable.Extra.LibraryName as LibraryName+import qualified CabalGild.Unstable.Extra.PackageName as PackageName+import qualified Distribution.Types.Mixin as Mixin++sort :: Mixin.Mixin -> Mixin.Mixin+sort x =+  Mixin.Mixin+    { Mixin.mixinPackageName = Mixin.mixinPackageName x,+      Mixin.mixinLibraryName = Mixin.mixinLibraryName x,+      Mixin.mixinIncludeRenaming = IncludeRenaming.sort $ Mixin.mixinIncludeRenaming x+    }++toCaseFold :: Mixin.Mixin -> Mixin.Mixin+toCaseFold x =+  x+    { Mixin.mixinPackageName = PackageName.toCaseFold $ Mixin.mixinPackageName x,+      Mixin.mixinLibraryName = LibraryName.toCaseFold $ Mixin.mixinLibraryName x+    }
source/library/CabalGild/Unstable/Extra/ModuleName.hs view
@@ -12,6 +12,13 @@ fromFilePath :: FilePath -> Maybe ModuleName.ModuleName fromFilePath = Parsec.simpleParsec . List.intercalate "." . FilePath.splitDirectories +toCaseFold :: ModuleName.ModuleName -> ModuleName.ModuleName+toCaseFold =+  ModuleName.fromString+    . List.intercalate "."+    . fmap String.toCaseFold+    . ModuleName.components+ -- | Converts a 'ModuleName.ModuleName' into a 'Fields.FieldLine'. toFieldLine :: a -> ModuleName.ModuleName -> Fields.FieldLine a toFieldLine a = Fields.FieldLine a . String.toUtf8 . Pretty.prettyShow
+ source/library/CabalGild/Unstable/Extra/ModuleRenaming.hs view
@@ -0,0 +1,12 @@+module CabalGild.Unstable.Extra.ModuleRenaming where++import qualified CabalGild.Unstable.Extra.ModuleName as ModuleName+import qualified Data.Bifunctor as Bifunctor+import qualified Data.List as List+import qualified Distribution.Types.ModuleRenaming as ModuleRenaming++sort :: ModuleRenaming.ModuleRenaming -> ModuleRenaming.ModuleRenaming+sort x = case x of+  ModuleRenaming.DefaultRenaming -> ModuleRenaming.DefaultRenaming+  ModuleRenaming.HidingRenaming ys -> ModuleRenaming.HidingRenaming $ List.sortOn ModuleName.toCaseFold ys+  ModuleRenaming.ModuleRenaming ys -> ModuleRenaming.ModuleRenaming $ List.sortOn (Bifunctor.bimap ModuleName.toCaseFold ModuleName.toCaseFold) ys
+ source/library/CabalGild/Unstable/Extra/PackageName.hs view
@@ -0,0 +1,10 @@+module CabalGild.Unstable.Extra.PackageName where++import qualified CabalGild.Unstable.Extra.String as String+import qualified Distribution.Types.PackageName as PackageName++toCaseFold :: PackageName.PackageName -> PackageName.PackageName+toCaseFold =+  PackageName.mkPackageName+    . String.toCaseFold+    . PackageName.unPackageName
source/library/CabalGild/Unstable/Extra/String.hs view
@@ -4,6 +4,9 @@ import qualified Data.Text as Text import qualified Data.Text.Encoding as Encoding +toCaseFold :: String -> String+toCaseFold = Text.unpack . Text.toCaseFold . Text.pack+ -- | Converts the given 'String' into a UTF-8 encoded 'ByteString.ByteString'. toUtf8 :: String -> ByteString.ByteString toUtf8 = Encoding.encodeUtf8 . Text.pack
+ source/library/CabalGild/Unstable/Extra/UnqualComponentName.hs view
@@ -0,0 +1,10 @@+module CabalGild.Unstable.Extra.UnqualComponentName where++import qualified CabalGild.Unstable.Extra.String as String+import qualified Distribution.Types.UnqualComponentName as UnqualComponentName++toCaseFold :: UnqualComponentName.UnqualComponentName -> UnqualComponentName.UnqualComponentName+toCaseFold =+  UnqualComponentName.mkUnqualComponentName+    . String.toCaseFold+    . UnqualComponentName.unUnqualComponentName
source/library/CabalGild/Unstable/Type/Dependency.hs view
@@ -2,6 +2,7 @@  module CabalGild.Unstable.Type.Dependency where +import qualified CabalGild.Unstable.Extra.UnqualComponentName as UnqualComponentName import qualified CabalGild.Unstable.Type.VersionRange as VersionRange import qualified Control.Monad as Monad import qualified Data.List.NonEmpty as NonEmpty@@ -53,6 +54,6 @@                   . PrettyPrint.punctuate PrettyPrint.comma                   . fmap Pretty.pretty                   . NonEmpty.toList-                  $ NonEmpty.sort ucns+                  $ NonEmpty.sortOn UnqualComponentName.toCaseFold ucns         ver = foldMap Pretty.pretty $ versionRange dependency      in PrettyPrint.hsep [pkg <> libs, ver]
source/library/CabalGild/Unstable/Type/Extension.hs view
@@ -1,5 +1,6 @@ module CabalGild.Unstable.Type.Extension where +import qualified CabalGild.Unstable.Extra.String as String import qualified Data.Ord as Ord import qualified Distribution.Parsec as Parsec import qualified Distribution.Pretty as Pretty@@ -14,7 +15,8 @@   deriving (Eq, Show)  instance Ord Extension where-  compare = Ord.comparing Pretty.prettyShow+  compare = Ord.comparing $ \x ->+    let y = Pretty.prettyShow x in (String.toCaseFold y, y)  instance Parsec.Parsec Extension where   parsec = Extension <$> Parsec.parsec
source/library/CabalGild/Unstable/Type/Mixin.hs view
@@ -1,51 +1,24 @@ module CabalGild.Unstable.Type.Mixin where -import qualified Data.List as List+import qualified CabalGild.Unstable.Extra.Mixin as Mixin import qualified Data.Ord as Ord import qualified Distribution.Parsec as Parsec import qualified Distribution.Pretty as Pretty-import qualified Distribution.Types.IncludeRenaming as IncludeRenaming import qualified Distribution.Types.Mixin as Mixin-import qualified Distribution.Types.ModuleRenaming as ModuleRenaming --- | This is a wrapper around 'Mixin.Mixin' that sorts the nested module names--- when parsing.+-- | This is a wrapper around 'Mixin.Mixin' that compares case insensitively+-- and sorts the nested module names when printing. newtype Mixin = Mixin   { unwrap :: Mixin.Mixin   }   deriving (Eq, Show)  instance Ord Mixin where-  compare = Ord.comparing unwrap+  compare = Ord.comparing $ \x ->+    let y = unwrap x in (Mixin.toCaseFold y, y)  instance Parsec.Parsec Mixin where-  parsec = Mixin . sortMixin <$> Parsec.parsec+  parsec = Mixin <$> Parsec.parsec  instance Pretty.Pretty Mixin where-  pretty = Pretty.pretty . unwrap---- | Sorts the 'Mixin.mixinIncludeRenaming' field using 'sortIncludeRenaming'.-sortMixin :: Mixin.Mixin -> Mixin.Mixin-sortMixin x =-  Mixin.Mixin-    { Mixin.mixinPackageName = Mixin.mixinPackageName x,-      Mixin.mixinLibraryName = Mixin.mixinLibraryName x,-      Mixin.mixinIncludeRenaming = sortIncludeRenaming $ Mixin.mixinIncludeRenaming x-    }---- | Sorts both 'IncludeRenaming.includeProvidesRn' and--- 'IncludeRenaming.includeRequiresRn' fields using 'sortModuleRenaming'.-sortIncludeRenaming :: IncludeRenaming.IncludeRenaming -> IncludeRenaming.IncludeRenaming-sortIncludeRenaming x =-  IncludeRenaming.IncludeRenaming-    { IncludeRenaming.includeProvidesRn = sortModuleRenaming $ IncludeRenaming.includeProvidesRn x,-      IncludeRenaming.includeRequiresRn = sortModuleRenaming $ IncludeRenaming.includeRequiresRn x-    }---- | Sorts both 'ModuleRenaming.HidingRenaming' and--- 'ModuleRenaming.ModuleRenaming' variants.-sortModuleRenaming :: ModuleRenaming.ModuleRenaming -> ModuleRenaming.ModuleRenaming-sortModuleRenaming x = case x of-  ModuleRenaming.DefaultRenaming -> ModuleRenaming.DefaultRenaming-  ModuleRenaming.HidingRenaming ys -> ModuleRenaming.HidingRenaming $ List.sort ys-  ModuleRenaming.ModuleRenaming ys -> ModuleRenaming.ModuleRenaming $ List.sort ys+  pretty = Pretty.pretty . Mixin.sort . unwrap
source/test-suite/Main.hs view
@@ -1002,6 +1002,11 @@       "library\n default-extensions: b a"       "library\n  default-extensions:\n    a\n    b\n" +  Hspec.it "sorts default-extensions case insensitively" $ do+    expectGilded+      "library\n default-extensions: B a"+      "library\n  default-extensions:\n    a\n    B\n"+   Hspec.it "sorts known extensions by name" $ do     expectGilded       "library\n default-extensions: DerivingVia BlockArguments"@@ -1032,11 +1037,21 @@       "library\n other-extensions: b a"       "library\n  other-extensions:\n    a\n    b\n" +  Hspec.it "sorts other-extensions case insensitively" $ do+    expectGilded+      "library\n other-extensions: B a"+      "library\n  other-extensions:\n    a\n    B\n"+   Hspec.it "sorts extensions" $ do     expectGilded       "library\n extensions: b a"       "library\n  extensions:\n    a\n    b\n" +  Hspec.it "sorts extensions case insensitively" $ do+    expectGilded+      "library\n extensions: B a"+      "library\n  extensions:\n    a\n    B\n"+   Hspec.it "sorts build-depends" $ do     expectGilded       "library\n build-depends: q , p == 1"@@ -1057,6 +1072,11 @@       "cabal-version: 3.0\nlibrary\n build-depends: p:{b,a}"       "cabal-version: 3.0\n\nlibrary\n  build-depends: p:{a, b}\n" +  Hspec.it "sorts sub-libraries case insensitively in build-depends" $ do+    expectGilded+      "cabal-version: 3.0\nlibrary\n build-depends: p:{B,a}"+      "cabal-version: 3.0\n\nlibrary\n  build-depends: p:{a, B}\n"+   Hspec.it "removes duplicate options" $ do     -- This is kind of silly because there's only one possible foreign library     -- option.@@ -1184,26 +1204,56 @@       "library\n mixins: q (M, N as O), p"       "library\n  mixins:\n    p,\n    q (M, N as O)\n" +  Hspec.it "sorts mixins case insensitively" $ do+    expectGilded+      "library\n mixins: B, a"+      "library\n  mixins:\n    a,\n    B\n"++  Hspec.it "sorts mixin sub-libraries case insensitively" $ do+    expectGilded+      "cabal-version: 3.4\nlibrary\n mixins: p:B, p:a"+      "cabal-version: 3.4\n\nlibrary\n  mixins:\n    p:a,\n    p:B,\n"+   Hspec.it "sorts hiding in mixins" $ do     expectGilded       "library\n mixins: p hiding (N, M)"       "library\n  mixins: p hiding (M, N)\n" +  Hspec.it "sorts hiding in mixins case insensitively" $ do+    expectGilded+      "library\n mixins: p hiding (MB, Ma)"+      "library\n  mixins: p hiding (Ma, MB)\n"+   Hspec.it "sorts modules in mixins" $ do     expectGilded       "library\n mixins: p (N, M)"       "library\n  mixins: p (M, N)\n" +  Hspec.it "sorts modules in mixins case insensitively" $ do+    expectGilded+      "library\n mixins: p (MB, Ma)"+      "library\n  mixins: p (Ma, MB)\n"+   Hspec.it "sorts hiding in mixins requires" $ do     expectGilded       "library\n mixins: p requires hiding (N, M)"       "library\n  mixins: p requires hiding (M, N)\n" +  Hspec.it "sorts hiding in mixins requires case insensitively" $ do+    expectGilded+      "library\n mixins: p requires hiding (MB, Ma)"+      "library\n  mixins: p requires hiding (Ma, MB)\n"+   Hspec.it "sorts modules in mixins requires" $ do     expectGilded       "library\n mixins: p requires (N, M)"       "library\n  mixins: p requires (M, N)\n" +  Hspec.it "sorts modules in mixins requires case insensitively" $ do+    expectGilded+      "library\n mixins: p requires (MB, Ma)"+      "library\n  mixins: p requires (Ma, MB)\n"+   Hspec.it "does not sort ghc-options" $ do     expectGilded       "library\n ghc-options: b a"@@ -1243,6 +1293,11 @@     expectGilded       "cabal-version: 3.0\ncustom-setup\n setup-depends: p:{b,a}"       "cabal-version: 3.0\n\ncustom-setup\n  setup-depends: p:{a, b}\n"++  Hspec.it "sorts sub-libraries case insensitively in setup-depends" $ do+    expectGilded+      "cabal-version: 3.0\ncustom-setup\n setup-depends: p:{B,a}"+      "cabal-version: 3.0\n\ncustom-setup\n  setup-depends: p:{a, B}\n"    Hspec.it "discovers an exposed module" $ do     expectDiscover