Index: git_docs/make_docs.sh |
diff --git a/git_docs/make_docs.sh b/git_docs/make_docs.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..efde5d86dd4267b9a6c87924bd8f4ccc0d4349eb |
--- /dev/null |
+++ b/git_docs/make_docs.sh |
@@ -0,0 +1,101 @@ |
+#!/bin/bash -e |
+shopt -s nullglob |
+ |
+cd $(dirname "$0") |
+ |
+# Script which takes all the asciidoc git-*.txt files in this directory, renders |
+# them to html + manpage format using git 1.9's doc toolchain, then puts |
+# them in depot_tools to be committed. |
+ |
+ensure_in_path() { |
+ local CMD=$1 |
+ local PTH=$(which "$CMD") |
+ if [[ ! $PTH ]] |
+ then |
+ echo Must have "$CMD" on your PATH! |
+ exit 1 |
+ else |
+ echo Using \'$PTH\' for ${CMD}. |
+ fi |
+} |
+ |
+ensure_in_path xmlto |
+ensure_in_path asciidoc |
+ |
+DFLT_CATALOG_PATH="/usr/local/etc/xml/catalog" |
+if [[ ! $XML_CATALOG_FILES && -f "$DFLT_CATALOG_PATH" ]] |
+then |
+ # Default if you install doctools with homebrew on mac |
+ export XML_CATALOG_FILES="$DFLT_CATALOG_PATH" |
+ echo Using \'$DFLT_CATALOG_PATH\' for \$XML_CATALOG_FILES. |
+fi |
+ |
+# We pull git to get its documentation toolchain |
+BRANCH=v1.9.0 |
+GITHASH=5f95c9f850b19b368c43ae399cc831b17a26a5ac |
+if [[ ! -d git || $(git -C git rev-parse HEAD) != $GITHASH ]] |
+then |
+ echo Cloning git |
+ rm -rf git |
+ git clone --single-branch --branch $BRANCH --depth 1 \ |
+ https://kernel.googlesource.com/pub/scm/git/git.git 2> /dev/null |
+ |
+ # Replace the 'source' and 'package' strings. |
+ ed git/Documentation/asciidoc.conf <<EOF |
+ H |
+ 81 |
+ s/Git/depot_tools |
+ +2 |
+ s/Git Manual/Chromium depot_tools Manual |
+ wq |
+EOF |
+fi |
+echo Git up to date at $GITHASH \($BRANCH\) |
+ |
+HTML_TARGETS=() |
+MAN_TARGETS=() |
+for x in *.txt |
+do |
+ TO="git/Documentation/$x" |
+ if [[ ! -f "$TO" ]] || ! cmp --silent "$x" "$TO" |
+ then |
+ echo \'$x\' differs |
+ cp $x "$TO" |
+ fi |
+ # Exclude files beginning with _ from the target list. This is useful to have |
+ # includable snippet files. |
+ if [[ ${x:0:1} != _ ]] |
+ then |
+ HTML_TARGETS+=("${x%%.txt}.html") |
+ MAN_TARGETS+=("${x%%.txt}.1") |
+ fi |
+done |
+ |
+VER="v$(git rev-parse --short HEAD)" |
+if [[ ! -f git/version ]] || ! cmp --silent git/version <(echo "$VER") |
+then |
+ echo Version changed, cleaning. |
+ echo "$VER" > git/version |
+ (cd git/Documentation && make clean) |
+fi |
+ |
+# This export is so that asciidoc sys snippets which invoke git run relative to |
+# depot_tools instead of the git clone. |
+( |
+ export GIT_DIR="$(git rev-parse --git-dir)" && |
+ cd git/Documentation && |
+ make -j"$[${#MAN_TARGETS} + ${#HTML_TARGETS}]" "${MAN_TARGETS[@]}" "${HTML_TARGETS[@]}" |
+) |
+ |
+mkdir htmlout 2> /dev/null || true |
+for x in "${HTML_TARGETS[@]}" |
+do |
+ echo Copying htmlout/$x |
+ cp "git/Documentation/$x" htmlout |
+done |
+ |
+for x in "${MAN_TARGETS[@]}" |
+do |
+ echo Copying ../man1/$x |
+ cp "git/Documentation/$x" ../man1 |
+done |