91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
#!/bin/sh
|
|
|
|
# This script checks the git log for URLs to the QEMU launchpad bugtracker
|
|
# and optionally checks whether the corresponding bugs are not closed yet.
|
|
|
|
show_help () {
|
|
echo "Usage:"
|
|
echo " -s <commit> : Start searching at this commit"
|
|
echo " -e <commit> : End searching at this commit"
|
|
echo " -c : Check if bugs are still open"
|
|
echo " -b : Open bugs in browser"
|
|
}
|
|
|
|
while getopts "s:e:cbh" opt; do
|
|
case "$opt" in
|
|
s) start="$OPTARG" ;;
|
|
e) end="$OPTARG" ;;
|
|
c) check_if_open=1 ;;
|
|
b) show_in_browser=1 ;;
|
|
h) show_help ; exit 0 ;;
|
|
*) echo "Use -h for help." ; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [ "x$start" = "x" ]; then
|
|
start=$(git tag -l 'v[0-9]*\.[0-9]*\.0' | tail -n 2 | head -n 1)
|
|
fi
|
|
if [ "x$end" = "x" ]; then
|
|
end=$(git tag -l 'v[0-9]*\.[0-9]*\.0' | tail -n 1)
|
|
fi
|
|
|
|
if [ "x$start" = "x" ] || [ "x$end" = "x" ]; then
|
|
echo "Could not determine start or end revision ... Please note that this"
|
|
echo "script must be run from a checked out git repository of QEMU."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Searching git log for bugs in the range $start..$end"
|
|
|
|
urlstr='https://bugs.launchpad.net/\(bugs\|qemu/+bug\)/'
|
|
bug_urls=$(git log $start..$end \
|
|
| sed -n '\,'"$urlstr"', s,\(.*\)\('"$urlstr"'\)\([0-9]*\).*,\2\4,p' \
|
|
| sort -u)
|
|
|
|
echo Found bug URLs:
|
|
for i in $bug_urls ; do echo " $i" ; done
|
|
|
|
if [ "x$check_if_open" = "x1" ]; then
|
|
echo
|
|
echo "Checking which ones are still open..."
|
|
for i in $bug_urls ; do
|
|
if ! curl -s -L "$i" | grep "value status" | grep -q "Fix Released" ; then
|
|
echo " $i"
|
|
final_bug_urls="$final_bug_urls $i"
|
|
fi
|
|
done
|
|
else
|
|
final_bug_urls=$bug_urls
|
|
fi
|
|
|
|
if [ "x$final_bug_urls" = "x" ]; then
|
|
echo "No open bugs found."
|
|
elif [ "x$show_in_browser" = "x1" ]; then
|
|
# Try to determine which browser we should use
|
|
if [ "x$BROWSER" != "x" ]; then
|
|
bugbrowser="$BROWSER"
|
|
elif command -v xdg-open >/dev/null 2>&1; then
|
|
bugbrowser=xdg-open
|
|
elif command -v gnome-open >/dev/null 2>&1; then
|
|
bugbrowser=gnome-open
|
|
elif [ "$(uname)" = "Darwin" ]; then
|
|
bugbrowser=open
|
|
elif command -v sensible-browser >/dev/null 2>&1; then
|
|
bugbrowser=sensible-browser
|
|
else
|
|
echo "Please set the BROWSER variable to the browser of your choice."
|
|
exit 1
|
|
fi
|
|
# Now show the bugs in the browser
|
|
first=1
|
|
for i in $final_bug_urls; do
|
|
"$bugbrowser" "$i"
|
|
if [ $first = 1 ]; then
|
|
# if it is the first entry, give the browser some time to start
|
|
# (to avoid messages like "Firefox is already running, but is
|
|
# not responding...")
|
|
sleep 4
|
|
first=0
|
|
fi
|
|
done
|
|
fi
|