Skip to content

Commit 99c2c28

Browse files
committed
Ability to provide args to haddock command
1 parent 9e616b3 commit 99c2c28

4 files changed

Lines changed: 69 additions & 4 deletions

File tree

src/Stack/Build/Haddock.hs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ generateLocalHaddockIndex envOverride wc bco localDumpPkgs locals = do
129129
"local packages"
130130
envOverride
131131
wc
132+
(boptsHaddockOpts (bcoBuildOpts bco))
132133
dumpPackages
133134
"."
134135
(localDocDir bco)
@@ -151,6 +152,7 @@ generateDepsHaddockIndex envOverride wc bco globalDumpPkgs snapshotDumpPkgs loca
151152
"local packages and dependencies"
152153
envOverride
153154
wc
155+
(boptsHaddockOpts (bcoBuildOpts bco))
154156
deps
155157
".."
156158
depDocDir
@@ -191,6 +193,7 @@ generateSnapHaddockIndex envOverride wc bco globalDumpPkgs snapshotDumpPkgs =
191193
"snapshot packages"
192194
envOverride
193195
wc
196+
(boptsHaddockOpts (bcoBuildOpts bco))
194197
(Map.elems snapshotDumpPkgs ++ Map.elems globalDumpPkgs)
195198
"."
196199
(snapDocDir bco)
@@ -201,11 +204,12 @@ generateHaddockIndex
201204
=> Text
202205
-> EnvOverride
203206
-> WhichCompiler
207+
-> HaddockOpts
204208
-> [DumpPackage () ()]
205209
-> FilePath
206210
-> Path Abs Dir
207211
-> m ()
208-
generateHaddockIndex descr envOverride wc dumpPackages docRelFP destDir = do
212+
generateHaddockIndex descr envOverride wc hdopts dumpPackages docRelFP destDir = do
209213
ensureDir destDir
210214
interfaceOpts <- (liftIO . fmap nubOrd . mapMaybeM toInterfaceOpt) dumpPackages
211215
unless (null interfaceOpts) $ do
@@ -225,10 +229,12 @@ generateHaddockIndex descr envOverride wc dumpPackages docRelFP destDir = do
225229
(Just destDir)
226230
envOverride
227231
(haddockExeName wc)
228-
(["--gen-contents", "--gen-index"] ++ [x | (xs,_,_,_) <- interfaceOpts, x <- xs])
232+
(toHaddockArgs hdopts ++
233+
["--gen-contents", "--gen-index"] ++
234+
[x | (xs,_,_,_) <- interfaceOpts, x <- xs])
229235
where
230236
toInterfaceOpt :: DumpPackage a b -> IO (Maybe ([String], UTCTime, Path Abs File, Path Abs File))
231-
toInterfaceOpt DumpPackage {..} = do
237+
toInterfaceOpt DumpPackage {..} =
232238
case dpHaddockInterfaces of
233239
[] -> return Nothing
234240
srcInterfaceFP:_ -> do

src/Stack/Config/Build.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ buildOptsFromMonoid BuildOptsMonoid{..} = BuildOpts
1818
, boptsHaddock = fromFirst
1919
(boptsHaddock defaultBuildOpts)
2020
buildMonoidHaddock
21+
, boptsHaddockOpts = haddockOptsFromMonoid buildMonoidHaddockOpts
2122
, boptsOpenHaddocks = fromFirst
2223
(boptsOpenHaddocks defaultBuildOpts)
2324
buildMonoidOpenHaddocks
@@ -49,6 +50,12 @@ buildOptsFromMonoid BuildOptsMonoid{..} = BuildOpts
4950
buildMonoidSplitObjs
5051
}
5152

53+
54+
haddockOptsFromMonoid :: HaddockOptsMonoid -> HaddockOpts
55+
haddockOptsFromMonoid HaddockOptsMonoid{..} =
56+
defaultHaddockOpts
57+
{toHaddockArgs = toMonoidHaddockArgs}
58+
5259
testOptsFromMonoid :: TestOptsMonoid -> TestOpts
5360
testOptsFromMonoid TestOptsMonoid{..} =
5461
defaultTestOpts

src/Stack/Options.hs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ module Stack.Options
2222
,ghciOptsParser
2323
,solverOptsParser
2424
,testOptsParser
25+
,haddockOptsParser
2526
,hpcReportOptsParser
2627
,pvpBoundsOption
2728
,globalOptsFromMonoid
@@ -374,7 +375,8 @@ buildOptsMonoidParser hide0 =
374375
\exception" <>
375376
hide)
376377
options =
377-
BuildOptsMonoid <$> libProfiling <*> exeProfiling <*> haddock <*> openHaddocks <*>
378+
BuildOptsMonoid <$> libProfiling <*> exeProfiling <*> haddock <*>
379+
haddockOptsParser hide0 <*> openHaddocks <*>
378380
haddockDeps <*> copyBins <*> preFetch <*> keepGoing <*> forceDirty <*>
379381
tests <*> testOptsParser hide0 <*> benches <*> benchOptsParser hide0 <*> reconfigure <*>
380382
cabalVerbose <*> splitObjs
@@ -871,6 +873,18 @@ solverOptsParser = boolFlags False
871873
"Automatically update stack.yaml with the solver's recommendations"
872874
idm
873875

876+
-- | Parser for haddock arguments.
877+
haddockOptsParser :: Bool -> Parser HaddockOptsMonoid
878+
haddockOptsParser hide0 =
879+
HaddockOptsMonoid <$> fmap (fromMaybe [])
880+
(optional
881+
(argsOption
882+
(long "haddock-arguments" <>
883+
metavar "HADDOCK_ARGS" <>
884+
help "Arguments passed to the haddock program" <>
885+
hide)))
886+
where hide = hideMods hide0
887+
874888
-- | Parser for test arguments.
875889
-- FIXME hide args
876890
testOptsParser :: Bool -> Parser TestOptsMonoid

src/Stack/Types/Config/Build.hs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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"
181189
buildMonoidHaddockArgName :: Text
182190
buildMonoidHaddockArgName = "haddock"
183191

192+
buildMonoidHaddockOptsArgName :: Text
193+
buildMonoidHaddockOptsArgName = "haddock-arguments"
194+
184195
buildMonoidOpenHaddocksArgName :: Text
185196
buildMonoidOpenHaddocksArgName = "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'
285323
data BenchmarkOpts =
286324
BenchmarkOpts

0 commit comments

Comments
 (0)