@@ -65,6 +65,10 @@ import System.Directory
65
65
import qualified Text.Parsec as P
66
66
import qualified Text.Parsec.Error as P
67
67
68
+ import Distribution.Compat.Lens
69
+ import qualified Distribution.Types.GenericPackageDescription.Lens as L
70
+ import qualified Distribution.Types.PackageDescription.Lens as L
71
+
68
72
-- ---------------------------------------------------------------
69
73
-- Parsing
70
74
@@ -282,10 +286,7 @@ parseGenericPackageDescription' lexWarnings fs = do
282
286
283
287
| name == " custom-setup" && null args = do
284
288
sbi <- parseFields setupBInfoFieldDescrs warnUnrec mempty fields
285
- let pd = packageDescription gpd
286
- -- TODO: what if already defined?
287
- let gpd' = gpd { packageDescription = pd { setupBuildInfo = Just sbi } }
288
- pure gpd'
289
+ pure $ gpd & L. packageDescription . L. setupBuildInfo ?~ sbi
289
290
290
291
| name == " source-repository" = do
291
292
kind <- case args of
@@ -298,16 +299,15 @@ parseGenericPackageDescription' lexWarnings fs = do
298
299
parseFailure pos $ " Invalid source-repository kind " ++ show args
299
300
pure RepoHead
300
301
sr <- parseFields sourceRepoFieldDescrs warnUnrec (emptySourceRepo kind) fields
301
- -- I want lens
302
- let pd = packageDescription gpd
303
- let srs = sourceRepos pd
304
- let gpd' = gpd { packageDescription = pd { sourceRepos = srs ++ [sr] } }
305
- pure gpd'
302
+
303
+ pure $ gpd & L. packageDescription . L. sourceRepos %~ snoc sr
306
304
307
305
| otherwise = do
308
306
parseWarning pos PWTUnknownSection $ " Ignoring section: " ++ show name
309
307
pure gpd
310
308
309
+ snoc x xs = xs ++ [x]
310
+
311
311
newSyntaxVersion :: Version
312
312
newSyntaxVersion = mkVersion [1 , 2 ]
313
313
0 commit comments