cabal-gild 1.0.2.3 → 1.0.2.4
raw patch · 4 files changed
+44/−7 lines, 4 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ CabalGild.Extra.Name: annotationLens :: Lens' (Name a) a
Files
- cabal-gild.cabal +1/−1
- source/library/CabalGild/Action/EvaluatePragmas.hs +14/−6
- source/library/CabalGild/Extra/Name.hs +5/−0
- source/test-suite/Main.hs +24/−0
cabal-gild.cabal view
@@ -11,7 +11,7 @@ maintainer: Taylor Fausak name: cabal-gild synopsis: Formats package descriptions.-version: 1.0.2.3+version: 1.0.2.4 source-repository head type: git
source/library/CabalGild/Action/EvaluatePragmas.hs view
@@ -1,6 +1,7 @@ module CabalGild.Action.EvaluatePragmas where import qualified CabalGild.Class.MonadWalk as MonadWalk+import qualified CabalGild.Extra.FieldLine as FieldLine import qualified CabalGild.Extra.ModuleName as ModuleName import qualified CabalGild.Extra.Name as Name import qualified CabalGild.Extra.String as String@@ -12,6 +13,7 @@ import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Maybe as Maybe import qualified Data.Set as Set+import qualified Distribution.Compat.Lens as Lens import qualified Distribution.Fields as Fields import qualified Distribution.ModuleName as ModuleName import qualified Distribution.Parsec as Parsec@@ -39,7 +41,7 @@ Fields.Field [Comment.Comment a] -> m (Fields.Field [Comment.Comment a]) field p f = case f of- Fields.Field n _ -> fmap (Maybe.fromMaybe f) . MaybeT.runMaybeT $ do+ Fields.Field n fls -> fmap (Maybe.fromMaybe f) . MaybeT.runMaybeT $ do Monad.guard $ Set.member (Name.value n) relevantFieldNames comment <- hoistMaybe . Utils.safeLast $ Name.annotation n pragma <- hoistMaybe . Parsec.simpleParsecBS $ Comment.value comment@@ -52,11 +54,17 @@ . FilePath.combine root <$> NonEmpty.toList ds files <- Trans.lift . fmap mconcat $ traverse MonadWalk.walk directories- pure- . Fields.Field n- . fmap (ModuleName.toFieldLine [])- . Maybe.mapMaybe (toModuleName directories)- $ Maybe.mapMaybe (stripAnyExtension extensions) files+ let comments = concatMap FieldLine.annotation fls+ fieldLines =+ zipWith ModuleName.toFieldLine (comments : repeat [])+ . Maybe.mapMaybe (toModuleName directories)+ $ Maybe.mapMaybe (stripAnyExtension extensions) files+ -- This isn't great, but the comments have to go /somewhere/.+ name =+ if null fieldLines+ then Lens.over Name.annotationLens (comments <>) n+ else n+ pure $ Fields.Field name fieldLines Fields.Section n sas fs -> Fields.Section n sas <$> traverse (field p) fs -- | These are the names of the fields that can have this action applied to
source/library/CabalGild/Extra/Name.hs view
@@ -1,10 +1,15 @@ module CabalGild.Extra.Name where +import qualified Distribution.Compat.Lens as Lens import qualified Distribution.Fields as Fields -- | Extracts the annotation from the given 'Fields.Name'. annotation :: Fields.Name a -> a annotation (Fields.Name x _) = x++-- | A lens for the 'annotation'.+annotationLens :: Lens.Lens' (Fields.Name a) a+annotationLens f s = fmap (\a -> Fields.Name a $ value s) . f $ annotation s -- | Extracts the value from the given 'Fields.Name'. value :: Fields.Name a -> Fields.FieldName
source/test-suite/Main.hs view
@@ -799,6 +799,12 @@ "library\n -- cabal-gild: discover .\n exposed-modules:" "library\n -- cabal-gild: discover .\n exposed-modules:\n M\n N\n" + Hspec.it "discovers no modules" $ do+ expectDiscover+ [(".", [])]+ "library\n -- cabal-gild: discover .\n exposed-modules:"+ "library\n -- cabal-gild: discover .\n exposed-modules:\n"+ Hspec.it "discovers a .lhs file" $ do expectDiscover [(".", ["M.lhs"])]@@ -885,6 +891,24 @@ [("d", ["M.hs"]), ("e", ["N.hs"])] "library\n -- cabal-gild: discover d e\n exposed-modules:" "library\n -- cabal-gild: discover d e\n exposed-modules:\n M\n N\n"++ Hspec.it "retains comments when discovering" $ do+ expectDiscover+ [(".", ["M.hs"])]+ "library\n -- cabal-gild: discover .\n exposed-modules:\n -- c\n N"+ "library\n -- cabal-gild: discover .\n exposed-modules:\n -- c\n M\n"++ Hspec.it "concatenates comments when discovering" $ do+ expectDiscover+ [(".", ["M.hs"])]+ "library\n -- cabal-gild: discover .\n exposed-modules:\n -- c\n N\n -- d\n O"+ "library\n -- cabal-gild: discover .\n exposed-modules:\n -- c\n -- d\n M\n"++ Hspec.it "retains comments even when no modules are discovered" $ do+ expectDiscover+ [(".", [])]+ "library\n -- cabal-gild: discover .\n exposed-modules:\n -- c\n N"+ "library\n -- c\n -- cabal-gild: discover .\n exposed-modules:\n" Hspec.it "parses an empty brace section" $ do expectGilded