| #!/bin/sh |
| # |
| # Copyright (C) 2013 The Android Open Source Project |
| # |
| # 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. |
| # |
| |
| # include common function and variable definitions |
| . `dirname $0`/prebuilt-common.sh |
| |
| DEFAULT_OUT_DIR=$TMPDIR/docs |
| |
| IN_DIR= |
| OUT_DIR=$DEFAULT_OUT_DIR |
| FORCE= |
| RUN_CHECKS= |
| |
| PROGRAM_PARAMETERS="" |
| PROGRAM_DESCRIPTION="Rebuild the HTML documentation from the Markdown text. |
| |
| Rebuild the NDK html documentation from the Markdown input source files |
| in \$NDK/docs/text. See \$NDK/docs/tools/README for the input file format. |
| |
| Builds are incremental, but you can use --force to rebuild everything. |
| |
| Output files are placed in $DEFAULT_OUT_DIR, unless --out-dir=<path> |
| is used." |
| |
| register_var_option "--force" FORCE "Rebuild all documentation" |
| |
| register_var_option "--run-checks" RUN_CHECKS "Run internal consistency checks" |
| |
| register_option "--in-dir=<path>" do_in_dir "Specify input directory" "\$NDK/docs/text" |
| do_in_dir () { |
| IN_DIR=$1 |
| } |
| |
| register_var_option "--out-dir=<path>" OUT_DIR "Specify output directory" |
| |
| MARKDOWN=markdown_py |
| register_var_option "--markdown=<executable>" MARKDOWN "Specify markdown executable to use" |
| |
| extract_parameters "$@" |
| |
| # Path to a Markdown filter program that is used to perform a few NDK-specific |
| # substitution in the input .text files. Note that this tool generates Markdown |
| # text, not HTML. TODO(digit): Use Markdown Extensions API to perform something |
| # similar, which is a lot more work though. |
| SUBST_PROGRAM=$ANDROID_NDK_ROOT/docs/tools/ndk-markdown-substitutions.py |
| |
| if [ "$RUN_CHECKS" ]; then |
| # Run unit tests for our $SUBST_PROGRAM |
| $SUBST_PROGRAM --run-checks |
| exit $? |
| fi |
| |
| if [ -z "$IN_DIR" ]; then |
| IN_DIR=$ANDROID_NDK_ROOT/docs/text |
| fi |
| IN_DIR=${IN_DIR%%/} |
| log "Input directory: $IN_DIR" |
| |
| if [ -z "$OUT_DIR" ]; then |
| OUT_DIR=$ANDROID_NDK_ROOT/docs |
| fi |
| OUT_DIR=${OUT_DIR%%/} |
| log "Output directory: $OUT_DIR" |
| |
| TEMP_DIR=$NDK_TMPDIR/build-docs |
| mkdir -p "$TEMP_DIR" |
| fail_panic "Could not create temporary directory" |
| |
| SRC_FILES=$(find "$IN_DIR" -name "*.text") |
| for SRC_FILE in $SRC_FILES; do |
| # Compute destination file. |
| DST_FILE=${SRC_FILE%%.text}.html |
| DST_FILE=$OUT_DIR${DST_FILE##$IN_DIR} |
| DST_DIR=$(dirname "$DST_FILE") |
| # Only rebuild file is source is older than destination, unless --force |
| # is being used. |
| if [ -z "$FORCE" -a -f "$DST_FILE" -a "$SRC_FILE" -ot "$DST_FILE" ]; then |
| log "Skipping: $SRC_FILE --> $DST_FILE" |
| else |
| log "Converting: $SRC_FILE --> $DST_FILE" |
| mkdir -p "$DST_DIR" |
| fail_panic "Could not create output directory: $DST_DIR" |
| # Apply custom substitutions. |
| TMP_FILE=$TEMP_DIR/$(basename "$DST_FILE").temp |
| run $SUBST_PROGRAM --output "$TMP_FILE" "$SRC_FILE" |
| fail_panic "Could not pre-process $SRC_FILE!" |
| # Process with Markdown. |
| run run $MARKDOWN --file="$DST_FILE" "$TMP_FILE" |
| fail_panic "Could not convert $SRC_FILE!" |
| fi |
| done |
| |
| run rm -rf "$TEMP_DIR" |
| |
| if [ "$OUT_DIR" != "$DEFAULT_OUT_DIR" ]; then |
| dump "Done!" |
| else |
| dump "Done, see $OUT_DIR" |
| fi |
| |