forked from scala/scala
-
Notifications
You must be signed in to change notification settings - Fork 0
/
scaladoc-diff
executable file
·117 lines (99 loc) · 2.89 KB
/
scaladoc-diff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env bash
#
# Script to compare the scaladoc of the current commit with the scaladoc
# of the parent commit. No arguments.
#
set -e
# opendiff for Mac OS X, meld for Ubuntu then default to other commands.
displaydiff() {
case "$(uname -s)" in
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 -q $oldsha
sbt 'set scalacOptions in Compile in doc in library += "-raw-output"' library/doc > build/scaladoc-output-$oldsha.txt
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)"
sbt 'set scalacOptions in Compile in doc in library += "-raw-output"' library/doc > build/scaladoc-output-$sha.txt
rm -rf build/scaladoc-${sha}
mv build/scaladoc build/scaladoc-${sha}
# Allow script to continue when diff results in -1
set +e
displaydiff build/scaladoc-output-$oldsha.txt build/scaladoc-output-$sha.txt
# Adapted from tools/scaladoc-compare
echo "Comparing versions with diff: build/scaladoc-${sha}/ build/scaladoc-$oldsha/"
NEW_PATH=build/scaladoc-${sha}/
OLD_PATH=build/scaladoc-$oldsha/
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 $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)
if [ "$DIFF" != "" ]
then
displaydiff $OLD_FILE $NEW_FILE > /dev/null
echo "next [y\N]? "
read -n 1 -s input
if [ "$input" == "N" ]; then exit 0; fi
fi
else
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
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