summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/scaladoc-diff100
1 files changed, 73 insertions, 27 deletions
diff --git a/tools/scaladoc-diff b/tools/scaladoc-diff
index 64dc025ecd..df0d1f3335 100755
--- a/tools/scaladoc-diff
+++ b/tools/scaladoc-diff
@@ -4,68 +4,114 @@
# of the parent commit. No arguments.
#
+set -e
-oldsha=$(git log -1 --format="%H" HEAD^)
-oldsha=${oldsha#g}
-oldsha=${oldsha:0:10}
+# opendiff for Mac OS X, meld for Ubuntu then default to other commands.
+displaydiff() {
+ case "$(uname -s)" in
-sha=`sh tools/get-scala-commit-sha`
-echo "parent commit sha: $oldsha. current commit sha: $sha"
+ Darwin)
+ if hash opendiff 2>/dev/null; then
+ echo opendiff "$@"
+ opendiff "$@"
+ else
+ echo diff "$@"
+ diff -y "$@" | less -N
+ fi
+ ;;
+
+ *)
+ if hash meld 2>/dev/null; then
+ echo meld "$@"
+ meld "$@"
+ elif hash gvimdiff 2>/dev/null; then
+ echo gvimdiff "$@"
+ gvimdiff "$@"
+ else
+ echo diff "$@"
+ diff -y "$@" | less -N
+ fi
+ ;;
+ esac
+}
+
+oldsha=$(git rev-parse --short HEAD^)
+
+# Use branch name defaulting to SHA1 when not available for example when in
+# detached HEAD state.
+sha=$(git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)
+
+echo "parent commit sha : $oldsha"
+echo "current commit sha : $sha"
# create scaladoc for parent commit if not done already
if [ ! -f "build/scaladoc-output-$oldsha.txt" ]
then
echo "making scaladoc for parent commit ($oldsha)"
- git checkout HEAD^
+ git checkout -q $oldsha
ant docs.lib -Dscaladoc.raw.output='yes' > build/scaladoc-output-$oldsha.txt
- cp -r build/scaladoc/ build/scaladoc-${oldsha}
- git checkout $sha
+ rm -rf build/scaladoc-${oldsha}
+ mv build/scaladoc build/scaladoc-${oldsha}
+ git checkout -q $sha
fi
# create scaladoc for current commit
echo "making scaladoc for current commit ($sha)"
ant docs.lib -Dscaladoc.raw.output='yes' > build/scaladoc-output-$sha.txt
-cp -r build/scaladoc/ build/scaladoc-${sha}
-echo "opendiff build/scaladoc-output-$oldsha.txt build/scaladoc-output-$sha.txt"
-opendiff build/scaladoc-output-$oldsha.txt build/scaladoc-output-$sha.txt
+rm -rf build/scaladoc-${sha}
+mv build/scaladoc build/scaladoc-${sha}
-echo "Comparing files..."
+# Allow script to continue when diff results in -1
+set +e
-difffile=build/scaladoc-diff-${sha}-$oldsha.txt
-sh tools/scaladoc-compare build/scaladoc-${sha}/ build/scaladoc-$oldsha/ &> $difffile
-open $difffile &
+displaydiff build/scaladoc-output-$oldsha.txt build/scaladoc-output-$sha.txt
# Adapted from tools/scaladoc-compare
-echo "Comparing versions with difftool: build/scaladoc-${sha}/ build/scaladoc-$oldsha/"
+echo "Comparing versions with diff: build/scaladoc-${sha}/ build/scaladoc-$oldsha/"
NEW_PATH=build/scaladoc-${sha}/
OLD_PATH=build/scaladoc-$oldsha/
-FILES=`find $NEW_PATH -name '*.html.raw'`
-if [ "$FILES" == "" ]
+
+NEWFILES=$(find $NEW_PATH -name '*.html.raw')
+if [ "$NEWFILES" == "" ]
then
echo "No .html.raw files found in $NEW_PATH!"
exit 1
fi
-for NEW_FILE in $FILES
+for NEW_FILE in $NEWFILES
do
OLD_FILE=${NEW_FILE/$NEW_PATH/$OLD_PATH}
if [ -f $OLD_FILE ]
then
- DIFF=`diff -q -w $NEW_FILE $OLD_FILE 2>&1`
+ DIFF=$(diff -q -w $NEW_FILE $OLD_FILE 2>&1)
if [ "$DIFF" != "" ]
then
- opendiff $OLD_FILE $NEW_FILE > /dev/null
+ displaydiff $OLD_FILE $NEW_FILE > /dev/null
+
echo "next [y\N]? "
read -n 1 -s input
-
- if [ "$input" == "N" ]
- then exit 0
- fi
+ if [ "$input" == "N" ]; then exit 0; fi
fi
else
- echo -e "$NEW_FILE: No corresponding file (expecting $OLD_FILE)\n\n"
+ echo
+ echo "New file: : $NEW_FILE"
+ echo "No corresponding old file : $OLD_FILE"
+
+ echo "next [y\N]? "
+ read -n 1 -s input
+ if [ "$input" == "N" ]; then exit 0; fi
fi
done
-echo "Done."
+OLDFILES=$(find $OLD_PATH -name '*.html.raw')
+for OLD_FILE in $OLDFILES
+do
+ NEW_FILE=${OLD_FILE/$OLD_PATH/$NEW_PATH}
+ if [ ! -f $NEW_FILE ]
+ then
+ echo
+ echo "Old file: : $OLD_FILE"
+ echo "No corresponding new file : $NEW_FILE"
+ fi
+done