sphinx-autoapi/docs/tutorials.rst
2020-04-05 18:50:32 -07:00

240 lines
7.1 KiB
ReStructuredText

Tutorials
=========
Setting up Automatic API Documentation Generation
-------------------------------------------------
This tutorial will assume that you already have a basic Sphinx project set up.
If you are not sure how to do this,
you can follow the :doc:`sphinx:usage/quickstart` guide in the Sphinx documentation.
The recommended way of installing AutoAPI is through a `virtualenv <https://virtualenv.pypa.io/>`_.
Once you have a virtualenv set up, you can install AutoAPI with the command:
========== ======================================
Language Command
========== ======================================
Python ``pip install sphinx-autoapi``
Go ``pip install sphinx-autoapi[go]``
Javascript ``pip install sphinx-autoapi``
.NET ``pip install sphinx-autoapi[dotnet]``
========== ======================================
Depending on which language you are trying to document,
each language has a different set of steps for finishing the setup of AutoAPI:
.. contents::
:local:
:backlinks: none
Python
^^^^^^
To enable the extension,
we need to add it to the list of extensions in Sphinx's ``conf.py`` file::
extensions = ['autoapi.extension']
For Python, there is only one required configuration option that we need to set.
:confval:`autoapi_dirs` tells AutoAPI which directories contain
the source code to document.
This can either be absolute, or relative to Sphinx's conf.py file.
For example, say we have a package and we have used ``sphinx-quickstart``
to create a Sphinx project in a ``docs/`` folder.
The directory structure might look like this:
.. code-block:: none
mypackage/
├── docs
│   ├── _build
│   ├── conf.py
│   ├── index.rst
│   ├── make.bat
│   ├── Makefile
│   ├── _static
│   └── _templates
├── mypackage
│   ├── _client.py
│   ├── __init__.py
│   └── _server.py
└── README.md
``sphinx-quickstart`` sets up the ``sphinx-build`` to run from
inside the ``docs/`` directory, and the source code is one level up.
So the value of our :confval:`autoapi_dirs` option would be::
autoapi_dirs = ['../mypackage']
If you are documenting many packages,
you can point AutoAPI to the directory that contains those packages.
For example if our source code was inside a ``src/`` directory:
.. code-block:: none
mypackage/
├── docs
│   ├── _build
│   ├── conf.py
│   ├── index.rst
│   ├── make.bat
│   ├── Makefile
│   ├── _static
│   └── _templates
├── README.md
└── src
└── mypackage
├── _client.py
├── __init__.py
└── _server.py
We can configure :confval:`autoapi_dirs` to be::
autoapi_dirs = ['../src']
Now that everything is configured,
AutoAPI will generate documentation when you run Sphinx!
.. code-block:: bash
cd docs/
sphinx-build -b html . _build
Go
^^^
Support for Go requires you to have the go environment installed
(https://golang.org/dl/), as well as our godocjson tool::
go get github.com/readthedocs/godocjson
and the Go domain extension for Sphinx::
pip install sphinxcontrib-golangdomain
To enable the AutoAPI extension,
we need to add it to the list of extensions in Sphinx's ``conf.py`` file
with the Go domain extension::
extensions = [
'sphinxcontrib_golangdomain',
'autoapi.extension',
]
For Go, there are two required configuration options that we need to set.
:confval:`autoapi_type` tells AutoAPI what type of language we are documenting.
For Go, this is::
autoapi_type = 'go'
The second configuration option is :confval:`autoapi_dirs`,
which tells AutoAPI which directories contain the source code to document.
These can either be absolute, or relative to Sphinx's `conf.py` file.
So if your documentation was inside a ``docs/`` directory
and your source code is in an ``example`` directory one level up,
you would configure :confval:`autoapi_dirs` to be::
autoapi_dirs = ['../example']
Now that everything is configured,
AutoAPI will generate documentation when you run Sphinx!
.. code-block:: bash
cd docs/
sphinx-build -b html . _build
Javascript
^^^^^^^^^^
Support for Javascript requires you to have jsdoc (http://usejsdoc.org/) installed::
npm install jsdoc -g
To enable the AutoAPI extension,
we need to add it to the list of extensions in Sphinx's ``conf.py`` file::
extensions = ['autoapi.extension']
For Javascript, there are two required configuration options that we need to set.
:confval:`autoapi_type` tells AutoAPI what type of language we are documenting.
For Javascript, this is::
autoapi_type = 'javascript'
The second configuration option is :confval:`autoapi_dirs`,
which tells AutoAPI which directories contain the source code to document.
These can either be absolute, or relative to Sphinx's `conf.py` file.
So if your documentation was inside a ``docs/`` directory
and your source code is in an ``example`` directory one level up,
you would configure :confval:`autoapi_dirs` to be::
autoapi_dirs = ['../example']
Now that everything is configured,
AutoAPI will generate documentation when you run Sphinx!
.. code-block:: bash
cd docs/
sphinx-build -b html . _build
.NET
^^^^
Support for .NET requires you to have the docfx (https://dotnet.github.io/docfx/) tool installed,
as well as the .NET domain extension for Sphinx::
pip install sphinxcontrib-dotnetdomain
Firstly, we need to configure docfx to output to a directory known to AutoAPI.
By default, ``docfx`` will output metadata files into the ``_api`` path.
You can configure which path to output files into by setting the path in your
`docfx configuration file <https://dotnet.github.io/docfx/tutorial/docfx.exe_user_manual.html#3-docfx-json-format>`_
in your project repository.
For example, if your ``conf.py`` file is located inside a ``docs/`` directory:
.. code:: json
{
"metadata": [{
"dest": "docs/_api"
}]
}
To enable the AutoAPI extension,
we need to add it to the list of extensions in Sphinx's ``conf.py`` file
with the .NET domain extension::
extensions = [
'sphinxcontrib.dotnetdomain',
'autoapi.extension',
]
For .NET, there are two required configuration options that we need to set.
:confval:`autoapi_type` tells AutoAPI what type of language we are documenting.
For .NET, this is::
autoapi_type = 'dotnet'
The second configuration option is :confval:`autoapi_dirs`,
which tells AutoAPI which directories contain the source code to document.
These can either be absolute, or relative to Sphinx's `conf.py` file.
So if your documentation was inside a ``docs/`` directory
and your source code is in an ``example`` directory one level up,
you would configure :confval:`autoapi_dirs` to be::
autoapi_dirs = ['../example']
Now that everything is configured,
AutoAPI will generate documentation when you run Sphinx!
.. code-block:: bash
cd docs/
sphinx-build -b html . _build