@@ -24,6 +24,14 @@ module Distribution.PackageDescription.FieldGrammar (
24
24
benchmarkFieldGrammar ,
25
25
validateBenchmark ,
26
26
unvalidateBenchmark ,
27
+ -- * Field formatters
28
+ formatDependencyList ,
29
+ formatExposedModules ,
30
+ formatExtraSourceFiles ,
31
+ formatHsSourceDirs ,
32
+ formatMixinList ,
33
+ formatOtherExtensions ,
34
+ formatOtherModules ,
27
35
-- ** Lenses
28
36
benchmarkStanzaBenchmarkType ,
29
37
benchmarkStanzaMainIs ,
@@ -41,6 +49,7 @@ module Distribution.PackageDescription.FieldGrammar (
41
49
42
50
import Distribution.Compat.Lens
43
51
import Distribution.Compat.Prelude
52
+ import Language.Haskell.Extension
44
53
import Prelude ()
45
54
46
55
import Distribution.CabalSpecVersion
@@ -57,6 +66,7 @@ import Distribution.Types.ExecutableScope
57
66
import Distribution.Types.ForeignLib
58
67
import Distribution.Types.ForeignLibType
59
68
import Distribution.Types.LibraryVisibility
69
+ import Distribution.Types.Mixin
60
70
import Distribution.Types.UnqualComponentName
61
71
62
72
import qualified Distribution.SPDX as SPDX
@@ -100,7 +110,7 @@ packageDescriptionFieldGrammar = PackageDescription
100
110
-- * Files
101
111
<*> monoidalFieldAla " data-files" (alaList' VCat FilePathNT ) L. dataFiles
102
112
<*> optionalFieldDefAla " data-dir" FilePathNT L. dataDir " "
103
- <*> monoidalFieldAla " extra-source-files" (alaList' VCat FilePathNT ) L. extraSrcFiles
113
+ <*> monoidalFieldAla " extra-source-files" formatExtraSourceFiles L. extraSrcFiles
104
114
<*> monoidalFieldAla " extra-tmp-files" (alaList' VCat FilePathNT ) L. extraTmpFiles
105
115
<*> monoidalFieldAla " extra-doc-files" (alaList' VCat FilePathNT ) L. extraDocFiles
106
116
where
@@ -125,7 +135,7 @@ libraryFieldGrammar
125
135
=> LibraryName
126
136
-> g Library Library
127
137
libraryFieldGrammar n = Library n
128
- <$> monoidalFieldAla " exposed-modules" (alaList' VCat MQuoted ) L. exposedModules
138
+ <$> monoidalFieldAla " exposed-modules" formatExposedModules L. exposedModules
129
139
<*> monoidalFieldAla " reexported-modules" (alaList CommaVCat ) L. reexportedModules
130
140
<*> monoidalFieldAla " signatures" (alaList' VCat MQuoted ) L. signatures
131
141
^^^ availableSince CabalSpecV2_0 []
@@ -408,14 +418,14 @@ buildInfoFieldGrammar = BuildInfo
408
418
^^^ availableSince CabalSpecV2_2 []
409
419
<*> monoidalFieldAla " js-sources" (alaList' VCat FilePathNT ) L. jsSources
410
420
<*> hsSourceDirsGrammar
411
- <*> monoidalFieldAla " other-modules" (alaList' VCat MQuoted ) L. otherModules
421
+ <*> monoidalFieldAla " other-modules" formatOtherModules L. otherModules
412
422
<*> monoidalFieldAla " virtual-modules" (alaList' VCat MQuoted ) L. virtualModules
413
423
^^^ availableSince CabalSpecV2_2 []
414
424
<*> monoidalFieldAla " autogen-modules" (alaList' VCat MQuoted ) L. autogenModules
415
425
<*> optionalFieldAla " default-language" MQuoted L. defaultLanguage
416
426
<*> monoidalFieldAla " other-languages" (alaList' FSep MQuoted ) L. otherLanguages
417
427
<*> monoidalFieldAla " default-extensions" (alaList' FSep MQuoted ) L. defaultExtensions
418
- <*> monoidalFieldAla " other-extensions" (alaList' FSep MQuoted ) L. otherExtensions
428
+ <*> monoidalFieldAla " other-extensions" formatOtherExtensions L. otherExtensions
419
429
<*> monoidalFieldAla " extensions" (alaList' FSep MQuoted ) L. oldExtensions
420
430
^^^ deprecatedSince CabalSpecV1_12
421
431
" Please use 'default-extensions' or 'other-extensions' fields."
@@ -438,8 +448,8 @@ buildInfoFieldGrammar = BuildInfo
438
448
<*> sharedOptionsFieldGrammar
439
449
<*> pure mempty -- static-options ???
440
450
<*> prefixedFields " x-" L. customFieldsBI
441
- <*> monoidalFieldAla " build-depends" (alaList CommaVCat ) L. targetBuildDepends
442
- <*> monoidalFieldAla " mixins" (alaList CommaVCat ) L. mixins
451
+ <*> monoidalFieldAla " build-depends" formatDependencyList L. targetBuildDepends
452
+ <*> monoidalFieldAla " mixins" formatMixinList L. mixins
443
453
^^^ availableSince CabalSpecV2_0 []
444
454
{-# SPECIALIZE buildInfoFieldGrammar :: ParsecFieldGrammar' BuildInfo #-}
445
455
{-# SPECIALIZE buildInfoFieldGrammar :: PrettyFieldGrammar' BuildInfo #-}
@@ -448,7 +458,7 @@ hsSourceDirsGrammar
448
458
:: (FieldGrammar g , Applicative (g BuildInfo ))
449
459
=> g BuildInfo [FilePath ]
450
460
hsSourceDirsGrammar = (++)
451
- <$> monoidalFieldAla " hs-source-dirs" (alaList' FSep FilePathNT ) L. hsSourceDirs
461
+ <$> monoidalFieldAla " hs-source-dirs" formatHsSourceDirs L. hsSourceDirs
452
462
<*> monoidalFieldAla " hs-source-dir" (alaList' FSep FilePathNT ) wrongLens
453
463
--- https://github.com/haskell/cabal/commit/49e3cdae3bdf21b017ccd42e66670ca402e22b44
454
464
^^^ deprecatedSince CabalSpecV1_2 " Please use 'hs-source-dirs'"
@@ -542,3 +552,28 @@ setupBInfoFieldGrammar def = flip SetupBuildInfo def
542
552
<$> monoidalFieldAla " setup-depends" (alaList CommaVCat ) L. setupDepends
543
553
{-# SPECIALIZE setupBInfoFieldGrammar :: Bool -> ParsecFieldGrammar' SetupBuildInfo #-}
544
554
{-# SPECIALIZE setupBInfoFieldGrammar :: Bool ->PrettyFieldGrammar' SetupBuildInfo #-}
555
+
556
+ -------------------------------------------------------------------------------
557
+ -- Field formatters - Define how field values should be formatted for 'pretty'.
558
+ -------------------------------------------------------------------------------
559
+
560
+ formatDependencyList :: [Dependency ] -> List CommaVCat (Identity Dependency ) Dependency
561
+ formatDependencyList = alaList CommaVCat
562
+
563
+ formatMixinList :: [Mixin ] -> List CommaVCat (Identity Mixin ) Mixin
564
+ formatMixinList = alaList CommaVCat
565
+
566
+ formatExtraSourceFiles :: [FilePath ] -> List VCat FilePathNT FilePath
567
+ formatExtraSourceFiles = alaList' VCat FilePathNT
568
+
569
+ formatExposedModules :: [ModuleName ] -> List VCat (MQuoted ModuleName ) ModuleName
570
+ formatExposedModules = alaList' VCat MQuoted
571
+
572
+ formatHsSourceDirs :: [FilePath ] -> List FSep FilePathNT FilePath
573
+ formatHsSourceDirs = alaList' FSep FilePathNT
574
+
575
+ formatOtherExtensions :: [Extension ] -> List FSep (MQuoted Extension ) Extension
576
+ formatOtherExtensions = alaList' FSep MQuoted
577
+
578
+ formatOtherModules :: [ModuleName ] -> List VCat (MQuoted ModuleName ) ModuleName
579
+ formatOtherModules = alaList' VCat MQuoted
0 commit comments