diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2022-06-27 22:42:28 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-07-04 17:56:30 -0400 |
commit | d002c6e04f0c0f26c3ee24661eb4cf5620f994ab (patch) | |
tree | 3b1a07e23ee41617c8e9fbe71f68271927853d6e /hadrian/src/CommandLine.hs | |
parent | ed793d7a5725689bf1f3c81ce3d7958ccaf60e7e (diff) | |
download | haskell-d002c6e04f0c0f26c3ee24661eb4cf5620f994ab.tar.gz |
hadrian: Add --haddock-base-url option for specifying base-url when generating docs
The motiviation for this flag is to be able to produce documentation
which is suitable for uploading for hackage, ie, the cross-package links
work correctly.
There are basically three values you want to set this to:
* off - default, base_url = ../%pkg% which works for local browsing
* on - no argument , base_url = https:://hackage.haskell.org/package/%pkg%/docs - for hackage docs upload
* on - argument, for example, base_url = http://localhost:8080/package/%pkg%/docs for testing the documentation.
The `%pkg%` string is a template variable which is replaced with the
package identifier for the relevant package.
This is one step towards fixing #21749
Diffstat (limited to 'hadrian/src/CommandLine.hs')
-rw-r--r-- | hadrian/src/CommandLine.hs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/hadrian/src/CommandLine.hs b/hadrian/src/CommandLine.hs index e2316057e3..7d1edc8978 100644 --- a/hadrian/src/CommandLine.hs +++ b/hadrian/src/CommandLine.hs @@ -2,7 +2,7 @@ module CommandLine ( optDescrs, cmdLineArgsMap, cmdFlavour, lookupFreeze1, lookupFreeze2, lookupSkipDepends, cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdCompleteSetting, cmdDocsArgs, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs, - cmdPrefix + cmdPrefix, DocArgs(..), defaultDocArgs ) where import Data.Either @@ -17,6 +17,7 @@ import System.Environment import qualified System.Directory as Directory import qualified Data.Set as Set +import Data.Maybe data TestSpeed = TestSlow | TestNormal | TestFast deriving (Show, Eq) @@ -32,6 +33,7 @@ data CommandLineArgs = CommandLineArgs , progressInfo :: ProgressInfo , buildRoot :: BuildRoot , testArgs :: TestArgs + , docsArgs :: DocArgs , docTargets :: DocTargets , prefix :: Maybe FilePath , completeStg :: Maybe String } @@ -50,6 +52,7 @@ defaultCommandLineArgs = CommandLineArgs , progressInfo = Brief , buildRoot = BuildRoot "_build" , testArgs = defaultTestArgs + , docsArgs = defaultDocArgs , docTargets = Set.fromList [minBound..maxBound] , prefix = Nothing , completeStg = Nothing } @@ -104,6 +107,13 @@ defaultTestArgs = TestArgs , testHasInTreeFiles = False } +data DocArgs = DocArgs + { docsBaseUrl :: String + } deriving (Eq, Show) + +defaultDocArgs :: DocArgs +defaultDocArgs = DocArgs { docsBaseUrl = "../%pkg%" } + readConfigure :: Either String (CommandLineArgs -> CommandLineArgs) readConfigure = Left "hadrian --configure has been deprecated (see #20167). Please run ./boot; ./configure manually" @@ -191,6 +201,13 @@ readTestOnlyPerf = Right $ \flags -> flags { testArgs = (testArgs flags) { testO readTestSkipPerf :: Either String (CommandLineArgs -> CommandLineArgs) readTestSkipPerf = Right $ \flags -> flags { testArgs = (testArgs flags) { testSkipPerf = True } } +readHaddockBaseUrl :: Maybe String -> Either String (CommandLineArgs -> CommandLineArgs) +readHaddockBaseUrl base_url = Right $ \flags -> + flags { docsArgs = (docsArgs flags) { docsBaseUrl = base_url' } } + + where base_url' = fromMaybe "https://hackage.haskell.org/package/%pkg%/docs" base_url + + readTestRootDirs :: Maybe String -> Either String (CommandLineArgs -> CommandLineArgs) readTestRootDirs rootdirs = Right $ \flags -> flags { testArgs = (testArgs flags) { testRootDirs = rootdirs'' flags } } @@ -316,6 +333,8 @@ optDescrs = "Destination path for the bindist 'install' rule" , Option [] ["complete-setting"] (OptArg readCompleteStg "SETTING") "Setting key to autocomplete, for the 'autocomplete' target." + , Option [] ["haddock-base-url"] (OptArg readHaddockBaseUrl "BASE_URL") + "Generate documentation suitable for upload to hackage or for another base URL (for example a local hackage server)." ] -- | A type-indexed map containing Hadrian command line arguments to be passed @@ -353,6 +372,7 @@ cmdLineArgsMap = do return $ insertExtra (progressInfo args) -- Accessed by Hadrian.Utilities $ insertExtra (buildRoot args) -- Accessed by Hadrian.Utilities $ insertExtra (testArgs args) -- Accessed by Settings.Builders.RunTest + $ insertExtra (docsArgs args) -- Accessed by Rules.Documentation $ insertExtra allSettings -- Accessed by Settings $ insertExtra args Map.empty |