Files
CMake/Utilities/Sphinx/create_identifiers.py
Brad King 8acf46caf1 Utilities/Sphinx: Add role and directive for 'envvar' in CMake domain
This enables cross-reference syntax for CMake environment variables:

    :envvar:`SOMEVAR`

and definition of CMake environment variables via a directive:

    .. envvar:: SOMEVAR

It also adds environment variables defined by the directive and by
`Help/envvar/SOMEVAR.rst` documents to the index.

This `envvar` role and directive is defined in our `cmake` domain
and overrides the equivalent `envvar` role and directive provided
by Sphinx in its default domain.  This is okay because we build
CMake documents in the `cmakd` domain.

This follows up the work from commit v3.10.0-rc1~43^2 (Help: Document
CMake's environment variables, 2017-09-01) that originally added
`envvar` documentation.
2018-04-19 09:02:44 -04:00

49 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python
import sys, os
if len(sys.argv) != 2:
sys.exit(-1)
name = sys.argv[1] + "/CMake.qhp"
f = open(name)
if not f:
sys.exit(-1)
lines = f.read().splitlines()
if not lines:
sys.exit(-1)
newlines = []
for line in lines:
mapping = (("command", "command"),
("envvar", "envvar"),
("variable", "variable"),
("generator", "generator"),
("target property", "prop_tgt"),
("test property", "prop_test"),
("source file property", "prop_sf"),
("global property", "prop_gbl"),
("module", "module"),
("directory property", "prop_dir"),
("cache property", "prop_cache"),
("policy", "policy"),
("installed file property", "prop_inst"))
for domain_object_string, domain_object_type in mapping:
if "<keyword name=\"" + domain_object_string + "\"" in line:
if not "id=\"" in line and not "#index-" in line:
prefix = "<keyword name=\"" + domain_object_string + "\" "
part1, part2 = line.split(prefix)
head, tail = part2.split("#" + domain_object_type + ":")
domain_object, rest = tail.split("\"")
line = part1 + prefix + "id=\"" + domain_object_type + "/" + domain_object + "\" " + part2
newlines.append(line + "\n")
f = open(name, "w")
f.writelines(newlines)