Using GI-DocGen
In order to use GI-DocGen, you will need:
a library using GObject and generating introspection data as part of its build process
a project configuration file
For the former, you should read the gobject-introspection documentation, which includes all the details on how to write introspectable API.
Writing a project configuration file
The project configuration file provides some basic information describing your project, expressed in key/value pairs, and will be exposed to the template system used when generating the API reference through gi-docgen. Not every key is mandatory, and the template will decide whether or not use its value when generating the API reference. For simplicity, we’re going to assume you’re using the “basic” template that is part of gi-docgen.
The project configuration file is written using ToML,
and you can use the --config
command line option for gi-docgen.
We begin with the library
preamble:
# SPDX-FileCopyrightText: 2023 Your Name Here
# SPDX-License-Identifier: CC0-1.0
[library]
description = "The GTK toolkit"
authors = "GTK Development Team"
license = "GPL-2.1-or-later"
browse_url = "https://gitlab.gnome.org/GNOME/gtk/"
repository_url = "https://gitlab.gnome.org/GNOME/gtk.git"
website_url = "https://www.gtk.org"
The keys above will be used in the main landing page for the library.
The copyright and license for the documentation configuration should be specified using SPDX syntax.
If your project has dependencies, and you wish to display them or cross-link
types and symbols from your API reference, you will need to describe them using
the dependencies
key, for instance:
# List the dependencies using their GIR namespace
dependencies = [
"GObject-2.0",
"Graphene-1.0",
"Pango-1.0",
"Gdk-4.0",
"Gsk-4.0",
]
Each dependency will need its own object, for instance:
[dependencies."GObject-2.0"]
name = "GObject"
description = "The base type system library"
docs_url = "https://developer.gnome.org/gobject/stable"
The name
, description
, and docs_url
keys will be used when generating the
list of dependencies on the main landing page.
If you wish to add links to the source code repository for type and symbol
declarations, as well as the location of the documentation source, you will need
a source-location
section:
[source-location]
# The base URL for the web UI
base_url = "https://gitlab.gnome.org/GNOME/gtk/-/blob/master/"
# The format for links, using "filename" and "line" for the format
file_format = "{filename}#L{line}"
If your library has additional content, in the form of Markdown files that you
wish to include in the generated API reference, you can use the extra
section:
[extra]
# A list of Markdown files; they will be parsed using the
# same rules as the documentation coming from the introspection
# data. The path of each file is relative to the content
# directory specified on the command line.
#
# The order in which they are included will be used when
# generating the index.
#
# The generated files will be placed in the root output directory
content_files = [
"getting_started.md",
"building.md",
"compiling.md",
"running.md",
"question_index.md",
# ...
]
# Additional images referenced by the documentation; their path
# is relative to the content directory specified on the command
# line.
#
# The image files will be copied into the root documentation,
# without replicating the directory structure in which they
# are listed.
content_images = [
"images/aboutdialog.png",
"images/action-bar.png",
"images/appchooserbutton.png",
"images/appchooserdialog.png",
# ...
]
Each additional Markdown file should have its copyright and license specified as metadata in its header:
Title: An Extra Markdown File
SPDX-License-Identifier: LGPL-2.1-or-later
SPDX-FileCopyrightText: 2023 Your Name Here
# An Extra Markdown File
Content starts here…
For more information about the project configuration, please see the Project configuration page.
Generating the API reference
Once you have a project configuration file, and the introspection data for the
library you wish to document, all you need is to launch the gi-docgen
command
line tool.
You will need to provide:
the location of the project configuration file
the location of the additional content files
additional search paths for the dependencies
the output directory for the generated files
the location of the introspection file
A simple invocation for the installed Gtk-4.0.gir
file is:
gi-docgen generate -C gtk4.toml /usr/share/gir-1.0/Gtk-4.0.gir
This will generate the API reference for the Gtk-4.0
namespace, and will put
the generate files under the current directory.