summaryrefslogtreecommitdiff
path: root/scripts/show-fixed-bugs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/show-fixed-bugs.sh')
-rwxr-xr-xscripts/show-fixed-bugs.sh91
1 files changed, 91 insertions, 0 deletions
diff --git a/scripts/show-fixed-bugs.sh b/scripts/show-fixed-bugs.sh
new file mode 100755
index 0000000000..36f306898f
--- /dev/null
+++ b/scripts/show-fixed-bugs.sh
@@ -0,0 +1,91 @@
+#!/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