#!/bin/sh # Build html versions of sections of lilypond documentation # # Usage: ./doc-section.sh MANUAL SECTION # # where MANUAL is the manual and SECTION is the section to be # built. # # For example, NR 1.2 would be built by # ./doc-section.sh notation rhythms # # and LM 1 would be built by # ./doc-section.sh learning tutorial # # At the end of the run, the user is prompted whether or not to # remove the generated files. # # According to http://code.google.com/p/lilypond/issues/detail?id=1236 # the location of the lilypond git tree is taken from $LILYPOND_GIT # if specified, otherwise it is auto-detected. # # It is assumed that compilation takes place in the build/ # subdirectory, but this can be overridden by setting the environment # variable LILYPOND_BUILD_DIR. # # Similarly, output defaults to build/tempdocs/ but this can be # overridden by setting the environment variable LILYPOND_TEMPDOCS. # # # Known limitations: # # * Doesn't use website css files # * Bitmap images aren't loaded properly # * Won't build Contributors' Guide; see scripts/auxiliar/cg-section.sh # usage () { cat <&2 Usage: $0 MANUAL SECTION e.g. $0 notation rhythms EOF exit "$1" } if [ "$1" = '-h' ] || [ "$1" = '--help' ]; then usage 0 fi [ $# = 2 ] || usage 1 if [ -n "$LILYPOND_GIT" ]; then echo "Using source tree from value of \$LILYPOND_GIT: $LILYPOND_GIT" else cd "`dirname $0`" cd ../.. LILYPOND_GIT="`pwd`" echo "\$LILYPOND_GIT was not set; auto-detected source tree at $LILYPOND_GIT" fi if [ -n "$BROWSER" ]; then echo "Using browser from \$BROWSER: $BROWSER" else echo "\$BROWSER not set; using firefox as default" BROWSER="firefox" fi if test ! -e "$LILYPOND_GIT/DEDICATION"; then echo "Error: $LILYPOND_GIT did not look like a LilyPond source tree; aborting." >&2 exit 1 fi : "${LILYPOND_BUILD_DIR:=$LILYPOND_GIT/build}" DOC_DIR="${LILYPOND_TEMPDOCS:-$LILYPOND_BUILD_DIR/tempdocs}" LILYPOND_BOOK="$LILYPOND_BUILD_DIR/out/bin/lilypond-book" TEXI2HTML="texi2html" REFCHECK="$LILYPOND_GIT/scripts/auxiliar/ref_check.py" MANUAL="$1" SECTION="$2" OUTPUT_DIR="$DOC_DIR/$SECTION" MANUAL_PATH="$LILYPOND_GIT/Documentation/$MANUAL" SECTION_PATH="$MANUAL_PATH/$SECTION.itely" if test ! -d "$LILYPOND_BUILD_DIR"; then echo "$LILYPOND_BUILD_DIR did not exist; check your setting of LILYPOND_BUILD_DIR. Aborting." >&2 exit 1 fi if test ! -d "$MANUAL_PATH"; then echo "$MANUAL_PATH was not a valid directory; is $MANUAL a valid manual?" >&2 exit 1 fi if test ! -e "$SECTION_PATH"; then echo "$SECTION_PATH did not exist; is $SECTION a valid section in the $MANUAL manual?" >&2 exit 1 fi if test ! -d "$DOC_DIR"; then mkdir "$DOC_DIR" cp "$LILYPOND_BUILD_DIR/Documentation/out/version.itexi" "$DOC_DIR" fi if test ! -d "$OUTPUT_DIR"; then mkdir "$OUTPUT_DIR" fi if test ! -d "$OUTPUT_DIR/out"; then mkdir "$OUTPUT_DIR/out" fi cp "$LILYPOND_GIT/Documentation/common-macros.itexi" "$OUTPUT_DIR/common-macros.itexi" cp "$LILYPOND_GIT/Documentation/macros.itexi" "$DOC_DIR/macros.itexi" cp "$DOC_DIR/version.itexi" "$OUTPUT_DIR/version.itexi" cp -r "$LILYPOND_GIT/Documentation/pictures/" "$OUTPUT_DIR/out/pictures" if test -e "$OUTPUT_DIR/$SECTION.html"; then rm "$OUTPUT_DIR/$SECTION.html" fi if test -e "$OUTPUT_DIR/out/$SECTION.texi"; then rm "$OUTPUT_DIR/out/$SECTION.texi" fi echo "Running $LILYPOND_BOOK" "$LILYPOND_BOOK" \ -f texi-html \ -I "$LILYPOND_GIT/Documentation/snippets" \ -I "$LILYPOND_GIT/Documentation/snippets/new" \ -I "$LILYPOND_GIT/input/manual" \ -I "$LILYPOND_GIT/Documentation" \ -I "$LILYPOND_GIT/Documentation/included" \ -I "$LILYPOND_GIT/Documentation/pictures" \ -o "$OUTPUT_DIR/out" \ "$SECTION_PATH" BOOKRC=$? if [ "$BOOKRC" != 0 ]; then echo "Lilypond-book returned code $BOOKRC" exit $BOOKRC fi echo "Running RefCheck" python "$REFCHECK" cd "$DOC_DIR" if test -f "$OUTPUT_DIR/out/$SECTION.texi"; then echo "Running $TEXI2HTML" cat "$DOC_DIR/macros.itexi" "$OUTPUT_DIR/out/$SECTION.texi" > "$OUTPUT_DIR/$SECTION.texi" "$TEXI2HTML" \ --no-validate \ --output="$OUTPUT_DIR/out/$SECTION.html" \ --I="$OUTPUT_DIR/out" \ "$OUTPUT_DIR/$SECTION.texi" fi echo "Displaying output in $BROWSER; close browser window when done." $BROWSER $OUTPUT_DIR/out/$SECTION.html cat <