@@ -16,6 +16,9 @@ module Stack.Types.Config.Build
1616 , TestOpts (.. )
1717 , defaultTestOpts
1818 , TestOptsMonoid (.. )
19+ , HaddockOpts (.. )
20+ , defaultHaddockOpts
21+ , HaddockOptsMonoid (.. )
1922 , BenchmarkOpts (.. )
2023 , defaultBenchmarkOpts
2124 , BenchmarkOptsMonoid (.. )
@@ -43,6 +46,8 @@ data BuildOpts =
4346 ,boptsExeProfile :: ! Bool
4447 ,boptsHaddock :: ! Bool
4548 -- ^ Build haddocks?
49+ ,boptsHaddockOpts :: ! HaddockOpts
50+ -- ^ Options to pass to haddock
4651 ,boptsOpenHaddocks :: ! Bool
4752 -- ^ Open haddocks in the browser?
4853 ,boptsHaddockDeps :: ! (Maybe Bool )
@@ -82,6 +87,7 @@ defaultBuildOpts = BuildOpts
8287 { boptsLibProfile = False
8388 , boptsExeProfile = False
8489 , boptsHaddock = False
90+ , boptsHaddockOpts = defaultHaddockOpts
8591 , boptsOpenHaddocks = False
8692 , boptsHaddockDeps = Nothing
8793 , boptsInstallExes = False
@@ -137,6 +143,7 @@ data BuildOptsMonoid = BuildOptsMonoid
137143 { buildMonoidLibProfile :: ! (First Bool )
138144 , buildMonoidExeProfile :: ! (First Bool )
139145 , buildMonoidHaddock :: ! (First Bool )
146+ , buildMonoidHaddockOpts :: ! HaddockOptsMonoid
140147 , buildMonoidOpenHaddocks :: ! (First Bool )
141148 , buildMonoidHaddockDeps :: ! (First Bool )
142149 , buildMonoidInstallExes :: ! (First Bool )
@@ -157,6 +164,7 @@ instance FromJSON (WithJSONWarnings BuildOptsMonoid) where
157164 (\ o -> do buildMonoidLibProfile <- First <$> o ..:? buildMonoidLibProfileArgName
158165 buildMonoidExeProfile <- First <$> o ..:? buildMonoidExeProfileArgName
159166 buildMonoidHaddock <- First <$> o ..:? buildMonoidHaddockArgName
167+ buildMonoidHaddockOpts <- jsonSubWarnings (o ..:? buildMonoidHaddockOptsArgName ..!= mempty )
160168 buildMonoidOpenHaddocks <- First <$> o ..:? buildMonoidOpenHaddocksArgName
161169 buildMonoidHaddockDeps <- First <$> o ..:? buildMonoidHaddockDepsArgName
162170 buildMonoidInstallExes <- First <$> o ..:? buildMonoidInstallExesArgName
@@ -181,6 +189,9 @@ buildMonoidExeProfileArgName = "executable-profiling"
181189buildMonoidHaddockArgName :: Text
182190buildMonoidHaddockArgName = " haddock"
183191
192+ buildMonoidHaddockOptsArgName :: Text
193+ buildMonoidHaddockOptsArgName = " haddock-arguments"
194+
184195buildMonoidOpenHaddocksArgName :: Text
185196buildMonoidOpenHaddocksArgName = " open-haddocks"
186197
@@ -281,6 +292,33 @@ instance Monoid TestOptsMonoid where
281292 mempty = memptydefault
282293 mappend = mappenddefault
283294
295+
296+
297+ -- | Haddock Options
298+ data HaddockOpts =
299+ HaddockOpts { toHaddockArgs :: ! [String ] -- ^ Arguments passed to haddock program
300+ } deriving (Eq ,Show )
301+
302+ data HaddockOptsMonoid =
303+ HaddockOptsMonoid { toMonoidHaddockArgs :: ! [String ]
304+ } deriving (Show , Generic )
305+
306+ defaultHaddockOpts :: HaddockOpts
307+ defaultHaddockOpts = HaddockOpts {toHaddockArgs = [] }
308+
309+ instance FromJSON (WithJSONWarnings HaddockOptsMonoid ) where
310+ parseJSON = withObjectWarnings " HaddockOptsMonoid"
311+ (\ o -> do toMonoidHaddockArgs <- o ..:? toMonoidHaddockArgsName ..!= []
312+ return HaddockOptsMonoid {.. })
313+
314+ instance Monoid HaddockOptsMonoid where
315+ mempty = memptydefault
316+ mappend = mappenddefault
317+
318+ toMonoidHaddockArgsName :: Text
319+ toMonoidHaddockArgsName = " haddock-args"
320+
321+
284322-- | Options for the 'FinalAction' 'DoBenchmarks'
285323data BenchmarkOpts =
286324 BenchmarkOpts
0 commit comments