qemu/scripts/show-fixed-bugs.sh

92 lines
2.7 KiB
Bash
Raw Normal View History

#!/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