114 lines
3.4 KiB
Bash
Executable file
114 lines
3.4 KiB
Bash
Executable file
#!/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
|
|
|