Skip to content
This repository has been archived by the owner on Aug 3, 2024. It is now read-only.

Commit

Permalink
Document multi component support
Browse files Browse the repository at this point in the history
  • Loading branch information
coot committed Apr 17, 2021
1 parent f2aaf7b commit e1faf47
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Contents:
intro
invoking
markup
multi-components


Indices and tables
Expand Down
45 changes: 45 additions & 0 deletions doc/multi-components.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Haddocks of multiple components
===============================

Haddock supports building documentation of multiple components. First, one
needs to build haddocks of all components which can be done with:

.. code-block:: none
cabal haddock --haddock-html \
--haddock-quickjump \
--haddock-option="--use-index=../doc-index.html" \
--haddock-option="--use-contents=../index.html" \
--haddock-option="--base-url=.." \
all
The new `--base-url` option will allow to access the static files from the
main directory (in this example its the relative `./..` directory). It will
also prevent `haddock` from copying its static file to each of the
documentation folders, we're only need a single copy of them where the
`--base-url` option points to.

The second step requires to copy all the haddocks to a common directory, let's
say `./docs`, this will depend on your project and it might look like:

.. code-block:: none
cp -r dist-newstyle/build/x86_64-linux/ghc-9.0.1/package-a-0.1.0.0/doc/html/package-a/ docs
cp -r dist-newstyle/build/x86_64-linux/ghc-9.0.1/package-b-0.1.0.0/doc/html/package-b/ docs
Note that you can also include documentation of other packages in this way,
e.g. `base`, but you need to know where it is hidden on your hard-drive.

To build html and js (`quickjump`) indexes one can now invoke `haddock` with:

.. code-block:: none
haddock \
-o docs \
--quickjump --gen-index --gen-contents \
--read-interface=package-a,docs/package-a/package-a.haddock \
--read-interface=package-b,docs/package-b/package-b.haddock
There's an example project which shows how to do that posted `here
<https://github.com/coot/haddock-example>`_, which haddocks are served on
`github-pages <https://coot.github.io/haddock-example>`_.

0 comments on commit e1faf47

Please sign in to comment.