More fixes

This commit is contained in:
Griatch 2020-04-05 15:02:38 +02:00
parent 9f7d826957
commit cb975f1b16
3 changed files with 161 additions and 17 deletions

View file

@ -3,7 +3,7 @@
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SPHINXMULTIVERSION ?= sphinx-multiversion
SPHINXAPIDOC ?= sphinx-apidoc
@ -14,16 +14,22 @@ AUTODOCDIR = $(SOURCEDIR)/api
EVDIR ?= $(realpath ../evennia)
EVGAMEDIR ?= $(realpath ../../gamedir)
cblue = $(shell echo "\033[1m\033[34m")
cnorm = $(shell echo "\033[0m")
QUICKFILES=$(SOURCEDIR)/*.md
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@echo "Evennia-specific: "
@echo " install - get build requirements"
@echo " clean - remove remnants of a previous build"
@echo " local - build local html docs of the current branch (no multiversion)."
@echo " mv-local - build full multiversion html docs, without deploying (req. all changes committed to git)"
@echo " release - build and deploy multiversion docs online (req. github push access)"
@echo " $(cblue)install$(cnorm) to get build requirements"
@echo " $(cblue)clean$(cnorm) to remove remnants of a previous build"
@echo " $(cblue)local$(cnorm) to build local html docs of the current branch (no multiversion)."
@echo " $(cblue)mv-local$(cnorm) to build multiversion html docs, without deploying (req. local git commit)"
@echo " $(cblue)release$(cnorm) to build and deploy multiversion docs online (req. commit and github push access)"
.PHONY: help Makefile
@ -50,10 +56,13 @@ _multiversion-autodoc-index:
git diff-index --quiet HEAD || git commit -a -m "Updated API autodoc index."
_build:
@EVDIR=$(EVDIR) EVGAMEDIR=$(EVGAMEDIR) $(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)/html"
@EVDIR=$(EVDIR) EVGAMEDIR=$(EVGAMEDIR) $(SPHINXBUILD) $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html"
_quick-build:
NOAUTODOC=1 EVDIR=$(EVDIR) EVGAMEDIR=$(EVGAMEDIR) $(SPHINXBUILD) $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html" $(QUICKFILES)
_multiversion-build:
@EVDIR=$(EVDIR) EVGAMEDIR=$(EVGAMEDIR) $(SPHINXMULTIVERSION) "$(SOURCEDIR)" "$(BUILDDIR)/html"
@EVDIR=$(EVDIR) EVGAMEDIR=$(EVGAMEDIR) $(SPHINXMULTIVERSION) $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS)
_multiversion-deploy:
@bash -e deploy.sh
@ -68,10 +77,16 @@ clean:
@git clean -f -d docs/
@echo "Cleaned old build dir and leftover files."
quick:
make _check-env
make _quick-build $(FILES)
@echo ""
@echo "Documentation built (no autodocs). \nTo see result, open evennia/docs/build/html/index.html in a browser."
local:
make _check-env
make clean
make _autodoc_index
make _autodoc-index
make _build
@echo ""
@echo "Documentation built. \nTo see result, open evennia/docs/build/html/index.html in a browser."
@ -83,6 +98,9 @@ mv-local:
make _multiversion-build
@echo "Documentation built. \nTo see result, open evennia/docs/build/html/versions/<version>/index.html in a browser."
deploy:
make _multiversion-deploy
# build and prepare the docs for release
release:
make mv-local

View file

@ -3,7 +3,7 @@ Documentation for the Evennia MUD creation system.
The live documentation is available at `https://evennia.github.io/evennia/`.
# building the docs
# Building the docs
## Prerequisits
@ -19,9 +19,129 @@ a new game folder called `gamedir` at the same level as your `evennia` repo and
----- gamedir/
```
- Make sure you are in your virtualenv. Go to `evennia/docs/` and install the `requirements.txt` or run `make install` to do the same.
- Make sure you are in your virtualenv. Go to `evennia/docs/` and install the
`requirements.txt` or run `make install` to do the same.
## Building the docs.
## Building locally
With your build environment set up as above, stand in the `evennia/docs` directory and run `make local`. This builds the documentation.
With your build environment set up as above, stand in the `evennia/docs` directory and run
make local
This will build the html documentation (including api docs) in the new folder
`evennia/docs/build/html/`. To read it, open `evennia/docs/build/html/index.html` in any web browser.
Building the api docs can be quite slow. If you are working on some doc change
and just want to quickly check that things came out the way you want, you can
also opt to only build the normal docs:
make quick
You will get errors from the api index and won't be able to view the api-docs, but it's
a lot faster to run! This will not clean out the `build/` dir between runs. If you
find you get any old stuff hanging around in the
`build/` dir you can use
make clear
to remove any old build cruft before next quick-build.
## Building for release
The release-build will build all documentation branches. Only official Evennia
branches will be built so you can't use this to build your own testing branch.
- All local changes must have been committed to git first, since the docs build
by looking at the git tree.
- To build for local checking, run
make mv-local
- Once all is built and it looks ok, run
make deploy
Note that this step requires git-push access to the Evennia `gh-pages` branch on `github`.
If you know what you are doing you can also do
make release
This does the build + deploy steps automatically.
# Contributing and editing documentation
Check out the branch of Evennia you want to edit the documentation for. Then make your own
branch off this, make your changes and make a PR for it!
The documentation sources are in `evennia/docs/source/`. These are mainly
[Markdown][commonmark] (`.md`) files that you can edit like normal text files.
The ReST files in `source/api/` are auto-generated from the Evennia sources and
should _not_ be manually edited.
# Help with editing syntax
## Referring to titles in another file
If file1 looks like this:
```
# Header title
```
You can refer to it from another file as
```
Read more about it [here](path.to.file1.md:Header title)
```
To refer to code in the Evennia repository, you can use a relative reference from the docs/ folder:
```
You can find this code [here](../evennia/objects/objects.py).
```
This will be automatically translated to the matching github link so the reader can click and jump to that code directly.
## Making indices
To make a document tree (what Sphinx refers to as a "Toc Tree"), make a list of document urls like this:
```
* [Title1](doc1.md)
* [Title2](doc2.md)
```
This will create a toc-tree structure behind the scenes.
We may expand on this later. For now, check out existing docs and refer to the
[Markdown][commonmark] (CommonMark) specification.
# Technical
Evennia leverages [Sphinx][sphinx] with the [recommonmark][recommonmark] extension, which allows us to write our
docs in light-weight Markdown (more specifically [CommonMark][commonmark], like on github) rather than ReST.
The recommonmark extension however also allows us to use ReST selectively in the places were it is more
expressive than the simpler (but much easier) Markdown.
For [autodoc-generation][sphinx-autodoc] generation, we use the sphinx-[napoleon][sphinx-napoleon] extension
to understand our friendly Google-style docstrings used in classes and functions etc.
[sphinx]: https://www.sphinx-doc.org/en/master/
[recommonmark]: https://recommonmark.readthedocs.io/en/latest/index.html
[commonmark]: https://spec.commonmark.org/current/
[sphinx-autodoc]: http://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#module-sphinx.ext.autodoc
[sphinx-napoleon]: http://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html

View file

@ -54,10 +54,17 @@ release = '0.9'
# ones.
extensions = [
"recommonmark",
"sphinx.ext.napoleon",
"sphinx_multiversion"
"sphinx_multiversion",
"sphinx.ext.autosectionlabel"
]
if not os.environ.get("NOAUTODOC"):
extensions.append("sphinx.ext.napoleon")
# make sure sectionlabel references can be used as path/to/file:heading
autosectionlabel_prefix_document = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@ -95,8 +102,7 @@ smv_outputdir_format = "versions" + sep + "{config.release}"
# dynamic setup
github_doc_root = "https://github.com/evennia/tree/master/docs/"
github_doc_root = "https://github.com/evennia/tree/master/docs"
def setup(app):
# recommonmark setup