#!/bin/sh # # vim: expandtab ts=2 : ARGS=$* SPHINXBUILD=sphinx-build TMPDIR='/tmp/offlineimap-sphinx-doctrees' WEBSITE='../website' DOCBASE="${WEBSITE}/_doc" DESTBASE="${DOCBASE}/versions" VERSIONS_YML="${WEBSITE}/_data/versions.yml" ANNOUNCES_YML="${WEBSITE}/_data/announces.yml" version="v$(../offlineimap.py --version)" test -d "$DESTBASE" || exit 1 # # Build the sphinx documentation. # function api () { # Build the doc with sphinx. dest="${DESTBASE}/${version}" echo "Cleaning target directory: $dest" rm -rf "$dest" $SPHINXBUILD -b html -d "$TMPDIR" doc-src "$dest" # Build the JSON definitions for Jekyll. # This let know the website about the available APIs documentations. echo "Building Jekyll data: $VERSIONS_YML" echo "# DO NOT EDIT MANUALLY: it is generated by a script (website-doc.sh)" > "$VERSIONS_YML" for version in $(ls "$DESTBASE" -1 | sort -nr) do echo "- $version" done >> "$VERSIONS_YML" } # # Make Changelog public and save links to them as JSON. # function releases () { # Copy the Changelogs. for foo in ../Changelog.md ../Changelog.maint.md do cp -afv "$foo" "$DOCBASE" done # Build the announces JSON list. Format is JSON: # - {version: '', link: ''} # - ... echo "# DO NOT EDIT MANUALLY: it is generated by a script (website-doc.sh)" > "$ANNOUNCES_YML" grep -E '^### OfflineIMAP' ../Changelog.md | while read title do link="$(echo $title | sed -r -e 's,^### (OfflineIMAP.*)\),\1,' \ | tr '[:upper:]' '[:lower:]' \ | sed -r -e 's,[\.("],,g' \ | sed -r -e 's, ,-,g' )" v="$(echo $title \ | sed -r -e 's,^### [a-Z]+ (v[^ ]+).*,\1,' )" echo "- {version: '${v}', link: '$link'}" done | tee -a "$ANNOUNCES_YML" } exit_code=0 test "n$ARGS" = 'n' && ARG='usage' # no option passed for arg in $ARGS do case "n$arg" in "nreleases") releases ;; "napi") api ;; "nusage") echo "Usage: website-doc.sh " ;; *) echo "unkown option $arg" exit_code=$(( $exit_code + 1 )) ;; esac done exit $exit_code