| #!/bin/sh |
| # |
| ############################################################################# |
| # |
| # Updates the Doxygen generated documentation files in the source tree. |
| # If the doxygen command is not installed, it will exit with an error. |
| # This script can generate Doxygen documentation for all source files or for |
| # just liblzma API header files. |
| # |
| # It is recommended to use this script to update the Doxygen-generated HTML |
| # files since this will include the package version in the output and, |
| # in case of liblzma API docs, strip JavaScript files from the output. |
| # |
| ############################################################################# |
| # |
| # Authors: Jia Tan |
| # Lasse Collin |
| # |
| # This file has been put into the public domain. |
| # You can do whatever you want with this file. |
| # |
| ############################################################################# |
| |
| set -e |
| |
| if type doxygen > /dev/null 2>&1; then |
| : |
| else |
| echo "doxygen/update-doxygen: 'doxygen' command not found." >&2 |
| echo "doxygen/update-doxygen: Skipping Doxygen docs generation." >&2 |
| exit 1 |
| fi |
| |
| if test ! -f Doxyfile; then |
| cd `dirname "$0"` || exit 1 |
| if test ! -f Doxyfile; then |
| echo "doxygen/update-doxygen: Cannot find Doxyfile" >&2 |
| exit 1 |
| fi |
| fi |
| |
| # Get the package version so that it can be included in the generated docs. |
| PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1 |
| |
| # If no arguments are specified, default to generating liblzma API header |
| # documentation only. |
| case $1 in |
| '' | api) |
| # Remove old documentation before re-generating the new. |
| rm -rf ../doc/api |
| |
| # Generate the HTML documentation by preparing the Doxyfile |
| # in stdin and piping the result to the doxygen command. |
| # With Doxygen, the last assignment of a value to a tag will |
| # override any earlier assignment. So, we can use this |
| # feature to override the tags that need to change between |
| # "api" and "internal" modes. |
| ( |
| cat Doxyfile |
| echo "PROJECT_NUMBER = $PACKAGE_VERSION" |
| ) | doxygen - |
| |
| # As of Doxygen 1.8.0 - 1.9.6 and the Doxyfile options we use, |
| # the output is good without any JavaScript. Unfortunately |
| # Doxygen doesn't have an option to disable JavaScript usage |
| # completely so we strip it away with the hack below. |
| # |
| # Omitting the JavaScript code avoids some license hassle |
| # as jquery.js is fairly big, it contains more than jQuery |
| # itself, and doesn't include the actual license text (it |
| # only refers to the MIT license by name). |
| echo "Stripping JavaScript from Doxygen output..." |
| for F in ../doc/api/*.html |
| do |
| sed 's/<script [^>]*><\/script>//g |
| s/onclick="[^"]*"//g' \ |
| "$F" > ../doc/api/tmp |
| mv -f ../doc/api/tmp "$F" |
| done |
| rm -f ../doc/api/*.js |
| ;; |
| |
| internal) |
| # The docs from internal aren't for distribution so |
| # the JavaScript files aren't an issue here. |
| rm -rf ../doc/internal |
| ( |
| cat Doxyfile |
| echo "PROJECT_NUMBER = $PACKAGE_VERSION" |
| echo 'PROJECT_NAME = "XZ Utils"' |
| echo 'STRIP_FROM_PATH = ../src' |
| echo 'INPUT = ../src' |
| echo 'HTML_OUTPUT = internal' |
| echo 'EXTRACT_PRIVATE = YES' |
| echo 'EXTRACT_STATIC = YES' |
| echo 'EXTRACT_LOCAL_CLASSES = YES' |
| echo 'SEARCHENGINE = YES' |
| ) | doxygen - |
| ;; |
| |
| *) |
| echo "doxygen/update-doxygen: Error: mode argument '$1'" \ |
| "is not supported." >&2 |
| echo "doxygen/update-doxygen: Supported modes:" >&2 |
| echo "doxygen/update-doxygen: - 'api' (default):" \ |
| "liblzma API docs into doc/api" >&2 |
| echo "doxygen/update-doxygen: - 'internal':"\ |
| "internal docs into doc/internal" >&2 |
| exit 1 |
| ;; |
| esac |