Add bash script to convert builtin help to reStructuredText
Create a convert-help.bash script to extract builtin documentation as reStructuredText sources in a new Help directory. Run each executable with the --help-full option targeting a .rst file to extract the documentation. Generate Sphinx "toctree" directives to point each man page at the corresponding documents it should contain. Organize cmake-commands(7), cmake-properties(7), and cmake-variables(7) man pages into sections similar to those generated by --help-properties and --help-variables output previously.
This commit is contained in:
parent
81759c77af
commit
e94958e99c
|
@ -0,0 +1,306 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if test $# -ne 1; then
|
||||||
|
echo 1>&2 'Specify cmake executable directory'
|
||||||
|
exit 1
|
||||||
|
fi &&
|
||||||
|
bin="$1" &&
|
||||||
|
|
||||||
|
# Extract .rst documentation and generate man section 1 pages
|
||||||
|
mkdir -p Help/manual &&
|
||||||
|
cd Help &&
|
||||||
|
mkdir tmp && cd tmp &&
|
||||||
|
"$bin"/cmake --help-full ../manual/cmake.1.rst &&
|
||||||
|
tar c * | (cd .. && tar x) &&
|
||||||
|
cd .. && rm -rf tmp &&
|
||||||
|
sed -i '1 i\
|
||||||
|
cmake(1)\
|
||||||
|
********\
|
||||||
|
|
||||||
|
' manual/cmake.1.rst &&
|
||||||
|
mkdir tmp && cd tmp &&
|
||||||
|
"$bin"/ctest --help-full ../manual/ctest.1.rst &&
|
||||||
|
mv command/ctest_*.rst ../command &&
|
||||||
|
cd .. && rm -rf tmp &&
|
||||||
|
sed -i '1 i\
|
||||||
|
ctest(1)\
|
||||||
|
********\
|
||||||
|
|
||||||
|
' manual/ctest.1.rst &&
|
||||||
|
mkdir tmp && cd tmp &&
|
||||||
|
"$bin"/cpack --help-full ../manual/cpack.1.rst &&
|
||||||
|
mv variable ../var_cpack &&
|
||||||
|
cd .. && rm -rf tmp &&
|
||||||
|
sed -i '1 i\
|
||||||
|
cpack(1)\
|
||||||
|
********\
|
||||||
|
|
||||||
|
' manual/cpack.1.rst &&
|
||||||
|
mkdir tmp && cd tmp &&
|
||||||
|
"$bin"/ccmake --help-full ../manual/ccmake.1.rst &&
|
||||||
|
cd .. && rm -rf tmp &&
|
||||||
|
sed -i '1 i\
|
||||||
|
ccmake(1)\
|
||||||
|
*********\
|
||||||
|
|
||||||
|
' manual/ccmake.1.rst &&
|
||||||
|
mkdir tmp && cd tmp &&
|
||||||
|
"$bin"/cmake-gui --help-full ../manual/cmake-gui.1.rst &&
|
||||||
|
cd .. && rm -rf tmp &&
|
||||||
|
sed -i '1 i\
|
||||||
|
cmake-gui(1)\
|
||||||
|
************\
|
||||||
|
|
||||||
|
' manual/cmake-gui.1.rst &&
|
||||||
|
|
||||||
|
# Remove trailing whitespace and blank lines
|
||||||
|
find . -name '*.rst' |
|
||||||
|
while read f; do
|
||||||
|
sed -e 's/[ \t]*$//' -i "$f" &&
|
||||||
|
sed -e ':a' -e '/^\n*$/ {$d;N;ba;}' -i "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Generate man section 7 pages
|
||||||
|
{
|
||||||
|
deprecated_commands=$(
|
||||||
|
cat <<EOF
|
||||||
|
/command/build_name
|
||||||
|
/command/exec_program
|
||||||
|
/command/export_library_dependencies
|
||||||
|
/command/install_files
|
||||||
|
/command/install_programs
|
||||||
|
/command/install_targets
|
||||||
|
/command/link_libraries
|
||||||
|
/command/make_directory
|
||||||
|
/command/output_required_files
|
||||||
|
/command/remove
|
||||||
|
/command/subdir_depends
|
||||||
|
/command/subdirs
|
||||||
|
/command/use_mangled_mesa
|
||||||
|
/command/utility_source
|
||||||
|
/command/variable_requires
|
||||||
|
/command/write_file
|
||||||
|
EOF
|
||||||
|
) &&
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-commands(7)
|
||||||
|
*****************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
Normal Commands
|
||||||
|
===============
|
||||||
|
|
||||||
|
These commands may be used freely in CMake projects.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
echo "$deprecated_commands" > tmp &&
|
||||||
|
ls command/*.rst |sort|sed 's|^| /|;s|\.rst$||' |
|
||||||
|
grep -v /command/ctest_ | grep -v -x -F -f tmp &&
|
||||||
|
rm tmp &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Deprecated Commands
|
||||||
|
===================
|
||||||
|
|
||||||
|
These commands are available only for compatibility with older
|
||||||
|
versions of CMake. Do not use them in new code.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
$deprecated_commands
|
||||||
|
|
||||||
|
CTest Commands
|
||||||
|
==============
|
||||||
|
|
||||||
|
These commands are available only in ctest scripts.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls command/*.rst |sort|sed 's|^| /|;s|\.rst$||' | grep /command/ctest_
|
||||||
|
} > manual/cmake-commands.7.rst &&
|
||||||
|
{
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-generators(7)
|
||||||
|
*******************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
All Generators
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls generator/*.rst |sort|sed 's|^| /|;s|\.rst$||'
|
||||||
|
} > manual/cmake-generators.7.rst &&
|
||||||
|
{
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-modules(7)
|
||||||
|
****************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
All Modules
|
||||||
|
===========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls module/*.rst |sort|sed 's|^| /|;s|\.rst$||'
|
||||||
|
} > manual/cmake-modules.7.rst &&
|
||||||
|
{
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-policies(7)
|
||||||
|
*****************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
All Policies
|
||||||
|
============
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls policy/*.rst |sort|sed 's|^| /|;s|\.rst$||'
|
||||||
|
} > manual/cmake-policies.7.rst &&
|
||||||
|
{
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-properties(7)
|
||||||
|
*******************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
Properties of Global Scope
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_gbl/*.rst |sort|sed 's|^| /|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Properties on Directories
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_dir/*.rst |sort|sed 's|^| /|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Properties on Targets
|
||||||
|
=====================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_tgt/*.rst |sort|sed 's|^| /|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Properties on Tests
|
||||||
|
===================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_test/*.rst |sort|sed 's|^| /|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Properties on Source Files
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_sf/*.rst |sort|sed 's|^| /|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Properties on Cache Entries
|
||||||
|
===========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls prop_cache/*.rst|sort|sed 's|^| /|;s|\.rst$||'
|
||||||
|
} > manual/cmake-properties.7.rst &&
|
||||||
|
{
|
||||||
|
cat <<EOF &&
|
||||||
|
cmake-variables(7)
|
||||||
|
******************
|
||||||
|
|
||||||
|
.. only:: html or latex
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
Variables that Provide Information
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_info/*.rst |sort|sed 's|^| /|;s|var_info/|variable/|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Variables that Change Behavior
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_cmake/*.rst |sort|sed 's|^| /|;s|var_cmake/|variable/|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Variables that Describe the System
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_sys/*.rst |sort|sed 's|^| /|;s|var_sys/|variable/|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Variables that Control the Build
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_build/*.rst |sort|sed 's|^| /|;s|var_build/|variable/|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Variables for Languages
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_lang/*.rst |sort|sed 's|^| /|;s|var_lang/|variable/|;s|\.rst$||' &&
|
||||||
|
cat <<EOF &&
|
||||||
|
|
||||||
|
Variables for CPack
|
||||||
|
===================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
EOF
|
||||||
|
ls var_cpack/*.rst |sort|sed 's|^| /|;s|var_cpack/|variable/|;s|\.rst$||'
|
||||||
|
} > manual/cmake-variables.7.rst &&
|
||||||
|
mkdir variable &&
|
||||||
|
mv var_*/* variable &&
|
||||||
|
rmdir var_* &&
|
||||||
|
cd .. &&
|
||||||
|
|
||||||
|
# Move module help back into .cmake module file comments
|
||||||
|
(cd Help/module && ls *.rst) |
|
||||||
|
while read m; do
|
||||||
|
dm="Help/module/$m" &&
|
||||||
|
cm="Modules/${m%.rst}.cmake" &&
|
||||||
|
{
|
||||||
|
echo '#.rst:' &&
|
||||||
|
sed -e '
|
||||||
|
/^./ s/^/# /
|
||||||
|
/^$/ c #
|
||||||
|
s/ *$//
|
||||||
|
' "$dm" &&
|
||||||
|
echo '' &&
|
||||||
|
sed -e '1,/^$/d' "$cm"
|
||||||
|
} >"$cm.new" &&
|
||||||
|
mv "$cm.new" "$cm" &&
|
||||||
|
echo ".. cmake-module:: ../../$cm" > "$dm"
|
||||||
|
done
|
Loading…
Reference in New Issue