X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=scripts%2Fdocs-build.sh;h=69f962505d852320488bcb7f7100690b8a398b83;hb=6b346f4a89552574bd5fe077d1e7c839572cad87;hp=3b1e7b2b62e3ab32b80eb9d73ae97a976cad6018;hpb=3596411b631fc829112d41bc36d7a0b3c1e59bf7;p=opnfvdocs.git diff --git a/scripts/docs-build.sh b/scripts/docs-build.sh index 3b1e7b2b6..69f962505 100755 --- a/scripts/docs-build.sh +++ b/scripts/docs-build.sh @@ -8,6 +8,8 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +set +e + DOCS_DIR=${DOCS_DIR:-docs} INDEX_RST=${INDEX_RST:-index.rst} BUILD_DIR=${BUILD_DIR:-docs_build} @@ -19,11 +21,30 @@ GERRIT_COMMENT=${GERRIT_COMMENT:-} revision="$(git rev-parse --short HEAD)" rev_full="$(git rev-parse HEAD)" -version="$(git describe --abbrev=0 2> /dev/null || echo draft) ($revision)" +version="$(git tag | tail -1)" project="$(basename $(git rev-parse --show-toplevel))" html_notes=" Revision: $rev_full\n Build date: $(date -u +'%Y-%m-%d')" opnfv_logo="$OPNFVDOCS_DIR/etc/opnfv-logo.png" -copyright="$(date +%Y), OPNFV" +copyright="$(date +%Y), OPNFV." +copyrightlong="$(date +%Y), OPNFV. Licensed under CC BY 4.0." +error_count=0 + +function set_error() { + # TODO(yujunz) log detail errors + error_count=$((error_count + 1)) +} + +if [ "$(uname)" == "Darwin" ]; then + # Override system $SED/$FIND with gnu $SED and gnu $FIND + # If not found, install with + # $ brew install gnu-sed findutils + echo "macOS detected." + SED="gsed" + FIND="gfind" +else + SED="sed" + FIND="find" +fi function check_rst_doc() { _src="$1" @@ -33,7 +54,7 @@ function check_rst_doc() { # check right now, but these have to be fixed before OPNFV B release. _out=$(doc8 --max-line-length 240 --ignore D000 "$_src") || { _msg='Warning: rst validation (doc8) has failed, please fix the following error(s).' - _errs=$(echo "$_out" | sed -n -e "/^$_src/s/^/ /p") + _errs=$(echo "$_out" | $SED -n -e "/^$_src/s/^/ /p") echo echo -e "$_msg\n$_errs" echo @@ -46,7 +67,7 @@ function check_rst_doc() { function add_html_notes() { _src="$1" - find "$_src" -name '*.rst' | while read file + $FIND "$_src" -name '*.rst' | while read file do if grep -q -e ' _sha1_' "$file" ; then # TODO: remove this, once old templates were removed from all repos. @@ -54,9 +75,9 @@ function add_html_notes() { echo "Warn: '_sha1_' was found in [$file], use the latest document template." echo " See http://artifacts.opnfv.org/opnfvdocs/docs/how-to-use-docs ." echo - sed -i "s/ _sha1_/ $git_sha1/g" "$file" + $SED -i "s/ _sha1_/ $git_sha1/g" "$file" fi - sed -i -e "\$a\\\n..\n$html_notes" "$file" + $SED -i -e "\$a\\\n..\n$html_notes" "$file" done } @@ -105,6 +126,7 @@ function prepare_config() { add_config "$_conf" 'master_doc' "'index'" add_config "$_conf" 'pygments_style' "'sphinx'" add_config "$_conf" 'html_use_index' "False" + add_config "$_conf" 'html_last_updated_fmt' "'%b %d, %Y'" add_config "$_conf" 'html_logo' "'opnfv-logo.png'" add_config "$_conf" 'html_sidebars' \ "{'**': ['globaltoc.html', @@ -115,12 +137,12 @@ function prepare_config() { add_config "$_conf" 'release' "u'$version'" add_config "$_conf" 'version' "u'$version'" add_config "$_conf" 'project' "u'$project'" - add_config "$_conf" 'copyright' "u'$copyright'" + add_config "$_conf" 'copyright' "u'$copyrightlong'" add_config "$_conf" 'rst_epilog' "u'$html_notes'" echo "sphinx config to be used:" echo - sed -e "s/^/ /" "$_conf" + $SED -e "s/^/ /" "$_conf" echo } @@ -138,7 +160,7 @@ function generate_name_for_top_dir() { done echo "Error: cannot find name for top directory [$DOCS_DIR]" - exit 1 + set_error } function generate_name() { @@ -157,15 +179,22 @@ function generate_name() { if [[ ! -d "$OPNFVDOCS_DIR" ]] ; then echo "Error: $OPNFVDOCS_DIR dir not found." echo "See http://artifacts.opnfv.org/opnfvdocs/docs/how-to-use-docs ." - exit 1 + set_error fi if ! which virtualenv > /dev/null ; then echo "Error: 'virtualenv' not found. Exec 'sudo pip install virtualenv' first." - exit 1 + set_error +fi + +# workaround for doc8 error in python2.6 +if [[ $(python -V 2>&1) == Python\ 2.6.* ]] && [ -e /usr/bin/python2.7 ]; then + echo "creating venv with Python 2.7 instead of Python 2.6.x ..." + virtualenv "$VENV_DIR" --python=/usr/bin/python2.7 +else + virtualenv "$VENV_DIR" fi -virtualenv "$VENV_DIR" source "$VENV_DIR/bin/activate" pip install -r "$OPNFVDOCS_DIR/etc/requirements.txt" @@ -177,7 +206,7 @@ if [ -e "$DOCS_DIR/pre-hook.sh" ]; then source "$DOCS_DIR/pre-hook.sh" fi -find $DOCS_DIR -name $INDEX_RST -printf '%h\n' | while read dir +$FIND $DOCS_DIR -name $INDEX_RST -printf '%h\n' | while read dir do name=$(generate_name $dir) if is_top_dir "$dir" ; then @@ -199,12 +228,10 @@ do mkdir -p "$output" - sphinx-build -b html -t html -E "$src" "$output" - { - sphinx-build -b singlehtml -t singlehtml -E "$src" "${output}-single" + sphinx-build -b singlehtml -t singlehtml -E "$src" "$output" } || { - msg="Error: Single HTML creation for $dir has failed." + msg="Error: HTML creation for $dir has failed." echo echo "$msg" echo @@ -221,8 +248,8 @@ do # docs directory. ( cd $output - find . -type d -print | xargs -I d mkdir -p ../d - find . -type f -print | xargs -I f mv -b f ../f + $FIND . -type d -print | xargs -I d mkdir -p ../d + $FIND . -type f -print | xargs -I f mv -b f ../f ) rm -rf "$output" fi @@ -230,3 +257,5 @@ do done deactivate + +exit $error_count