| #!/bin/bash |
| # |
| # Copyright 2010 Google Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| # Processes the open-source header files using Doxygen. Each header |
| # must be preprocessed using doxify.sh to convert normal C++ comments |
| # into Doxygen Usage. |
| # |
| # comments: devel/doxify_tree.sh output_tarball |
| |
| set -e # exit script if any command returns an error |
| set -u # exit the script if any variable is uninitialized |
| |
| this_dir=$(dirname "${BASH_SOURCE[0]}") |
| cd "$this_dir/.." |
| src="$PWD" |
| cfg="$src/devel/doxygen.cfg" |
| |
| if [ $# != 1 ]; then |
| echo Usage: $0 output_tarball |
| exit 1 |
| fi |
| |
| if ! which doxygen > /dev/null; then |
| echo "doxygen is not installed; run" |
| echo " sudo apt-get install doxygen" |
| exit 1 |
| fi |
| |
| # This generates a documentation tarball, suitable for copying to |
| # modpagespeed.com. This should be in $1 |
| tarball="$(readlink -f $1)" |
| |
| source "$src/net/instaweb/public/VERSION" |
| PSOL_VERSION="$MAJOR.$MINOR.$BUILD.$PATCH" |
| |
| WORKDIR=$(mktemp -d) |
| trap "rm -r $WORKDIR" EXIT |
| |
| OUTPUT_DIRECTORY="$WORKDIR/doxygen_out" |
| mkdir "$OUTPUT_DIRECTORY" |
| |
| hacked_copies="$WORKDIR/hacked_copies" |
| mkdir "$hacked_copies" |
| |
| echo Preprocessing header files to turn normal C++ comments into Doxygen-style |
| echo comments.... |
| find net/ pagespeed/ -name "*.h" -exec "$src/devel/doxify.sh" {} \ |
| "$hacked_copies" \; |
| |
| # These variables are referenced in doxygen.cfg, so export them before running |
| # doxygen. |
| export PSOL_VERSION |
| export OUTPUT_DIRECTORY |
| |
| log_file=$OUTPUT_DIRECTORY/doxygen.log |
| cd $hacked_copies |
| doxygen $cfg 2> $log_file |
| |
| # Doxygen produces a large number of warnings about undocumented classes. At |
| # some point we should fix all these but this is going to take a while as there |
| # are 12431 as of 2016-11-18. |
| # |
| # These will reference files that we have hacked in this script, and using Emacs |
| # to navigate to these errors will get you to files you should never edit. |
| # Strip off the prefix so we'll print files with their source of truth. |
| grep hacked_copies $log_file | sed -e s@$hacked_copies/@@g |
| |
| # TODO(jmarantz): walk through files in $OUTPUT_DIRECTORY/html and see whether |
| # there are changes to the corresponding files in the documentation. |
| cd $OUTPUT_DIRECTORY |
| tar czf $tarball . |
| ls -l $tarball |