summaryrefslogtreecommitdiffstats
path: root/watch-bz
blob: cd22cdfecff58db779b2441dd6787e7b7afd23c9 (plain)
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
#!/bin/bash
# jpokorny@redhat.com (will be pleased to know about further enhancements)

# usage:
# 1. optionally git clone git://git.fedorahosted.org/git/python-bugzilla
#    (system-wide can also be used)
# 2. open ~/.watchbzrc for editing
#    - set BUGZILLA_ROOT when using cloned python-bugzilla
#    - optionally set STATUS and COMPONENT as per example
#      (or pass such string as a 1st argument)
#    - optionally set BZUSER to avoid the need to login manually before
#      the "watch session"; you can set BZPASSWORD as well but be careful!

HERE=$(dirname $0)

BUGZILLA=$(which bugzilla 2>/dev/null)
BUGZILLA_ROOT=/usr

# example defaults, modify via ~/.watchbzrc
COMPONENT=luci,ricci,clustermon,conga,sunzi
STATUS=OPEN
REFRESH_INTERVAL=600  # [s], better not to drain bugzilla's power...

[ -f ~/.watchbzrc ] && source ~/.watchbzrc

if [ -z "$BUGZILLA" ]; then
	# BUGZILLA_ROOT (path to local repo) should rather be set in ~/.watchbzrc
	BUGZILLA="${BUGZILLA_ROOT}/bin/bugzilla"
	export PYTHONPATH="${BUGZILLA_ROOT}:${PYTHONPATH}"
fi

# hardcoded for now (note the SEP - OUTPUT_FMT relationship)
SEP=@@@
WIDTH=$(( $(stty size | cut -d' ' -f2) - 1 ))

if [ $# -ge 1 ]; then
	if [[ "$1" = -* ]]; then
		STATUS=$(echo "$1" | cut -c2-)
		shift
	fi
	if [ $# -ge 1 ]; then
		COMPONENT="$1"
	fi
fi

# omit component if only single one queried
echo $COMPONENT | grep -q ','
if [ $? -eq 0 ]; then
	OUTPUT_FMT="%{component}$SEP%{bug_id}$SEP%{product}$SEP%{priority}$SEP%{status}$SEP%{flags}$SEP%{short_desc}"
else
	OUTPUT_FMT="%{bug_id}$SEP%{product}$SEP%{priority}$SEP%{status}$SEP%{flags}$SEP%{short_desc}"
fi

# login when available
if [ -n "$BZUSER" ]; then
	"$BUGZILLA" login "$BZUSER" $BZPASSWORD
	if [ $? -ne 0 ]; then
		echo "Cannot log in"
		exit 2
	fi
fi

#sh -c \
watch -t --interval $REFRESH_INTERVAL --differences=cumulative \
  "$BUGZILLA query -c $COMPONENT -t $STATUS --outputformat $OUTPUT_FMT \
  | sed -u \
    -e \"s/${SEP}Red Hat Enterprise Linux /${SEP}EL/\" \
    -e \"s/${SEP}Fedora/${SEP} F /\" \
    -e \"s/${SEP}NEW/${SEP}N/\" \
    -e \"s/${SEP}ASSIGNED/${SEP}A/\" \
    -e \"s/${SEP}POST/${SEP}P/\" \
    -e \"s/${SEP}MODIFIED/${SEP}M/\" \
    -e \"s/${SEP}ON_QA/${SEP}Q/\" \
    -e \"s/${SEP}ON_DEV/${SEP}D/\" \
    -e \"s/${SEP}VERIFIED/${SEP}V/\" \
    -e \"s/${SEP}RELEASE_PENDING/${SEP}R/\" \
    -e \"s/${SEP}CLOSED/${SEP}C/\" \
    -e \"s/${SEP}urgent/${SEP}!!!/\" \
    -e \"s/${SEP}high/${SEP}!!/\" \
    -e \"s/${SEP}medium/${SEP} ! /\" \
    -e \"s/${SEP}low/${SEP} ~ /\" \
    -e \"s/${SEP}unspecified/${SEP} ? /\" \
    -e \"s/qa_ack/QA/\" \
    -e \"s/pm_ack/PM/\" \
    -e \"s/devel_ack/D/\" \
    -e \"s/needinfo/I/\" \
    -e \"s/exception/E/\" \
    -e \"s/blocker/BL/\" \
    -e \"s/requires_release_note/RN/\" \
    -e \"s/rhel-//\" \
    -e \"s/None//\" \
  | ${HERE}/table-data $SEP | cut -c-$WIDTH"
# todo: colours for priorities (rhbz#801626)
#-e 's/\(urgent\)/\^\[\[31m\1\^\[\[0m/' \