--- /dev/null
+#!/bin/bash
+
+. ~/.profile.d/gentoo.sh
+
+op=${0##*/}
+op=${op%-close}
+tdir="${HOME}/.cache/bugz"
+mkdir -p "${tdir}"
+find "${tdir}" -mmin +30 -type f -delete
+
+usage() {
+ cat <<-EOF
+ Usage: ${0##*/} <bugid> <reason> [<bugid> <reason> ...]
+ EOF
+ if [[ $# -gt 0 ]] ; then
+ printf '\nerror: %s\n' "$*"
+ fi
+ exit
+}
+
+bugs=()
+comments=()
+cl_msg=
+while [[ $# -ne 0 ]] ; do
+ bug=$1
+ reason=$2
+ shift 2
+
+ if [[ -z ${bug} || -n ${bug//[0-9#]} ]] ; then
+ usage "invalid bug"
+ fi
+
+ case ${bug} in
+ *#*) c=${bug##*#} ;;
+ *) c=0 ;;
+ esac
+ : $(( ++c ))
+ b=${bug%%#*}
+ bugs=( "${bugs[@]}" ${b} )
+ comments=( "${comments[@]}" "${reason}" )
+
+ xml="${tdir}/${b}.xml"
+ # server doesn't support timestamps, so cannot use -N
+ if [[ ! -e $xml ]] ; then
+ wget -q -O $xml https://bugs.gentoo.org/${b}?ctype=xml
+ fi
+ name=$(xml sel -E utf8 -t -m bugzilla/bug/long_desc -c who -n $xml | \
+ head -${c} | tail -1 | grep -o 'name=".*">' | cut -d\" -f2)
+ if [[ -z ${name} ]] ; then
+ name=$(xml sel -E utf8 -t -m bugzilla/bug/long_desc -v who -n $xml | \
+ head -${c} | tail -1 | cut -d@ -f1)
+ fi
+
+ if [[ -n ${cl_msg} ]] ; then
+ cl_msg+=" "
+ fi
+ cl_msg+="${reason} #${bug} by ${name}."
+done
+
+run() {
+ local opt=$1; shift
+ printf "'%s' " "$@"
+ echo
+ case $opt in
+ -g) "$@" ;;
+ esac
+}
+
+doit() {
+ run "$@" $op "${cl_msg}" || exit 1
+ echo
+ for (( n=0; n < ${#bugs[@]}; ++n )) ; do
+ b=${bugs[$n]}
+ c=${comments[$n]}
+ run "$@" gbugz -q modify ${b} --fixed -c "\
+should be all set now in the tree; thanks for the report!
+
+Commit message: $c$(printf '\n%s' ${urls})"
+ done
+ echo
+}
+
+cvs=$(cvs up)
+files=$(echo "$cvs" | awk '$1 ~ /^[MA]/ { print $NF }' | grep -v '^Manifest$')
+unk_files=$(echo "$cvs" | awk '$1 !~ /^[MA]/')
+if [[ -n ${unk_files} ]] ; then
+ echo "unknown files:"
+ echo "${unk_files}"
+ exit 1
+fi
+urls=$(cvs_gentoo_url ${files} | LC_ALL=C sort -V)
+
+cmds=$(doit -p)
+echo
+echo "${cmds}"
+printf "\nOk to go? [Y/n/e] "
+read g
+case ${g} in
+ e)
+ t=$(mktemp)
+ echo "${cmds}" > "${t}"
+ ${EDITOR:-nano} "${t}" || rm "${t}"
+ . "${t}"
+ rm "${t}"
+ ;;
+ ""|y)
+ echo
+ doit -g
+ ;;
+ *)
+ exit 1
+ ;;
+esac
return 1
}
arch_emails() {
- local a ret=""
+ local ret
if [[ $@ == *.ebuild* ]] ; then
local e keys
for e in "$@" ; do
keys=$(sed -n '/^[[:space:]]*KEYWORD/{s:.*=::;s:"::g;p}' ${e})
for a in ${keys} ; do
[[ ${a} != ~* ]] && continue
- ret="${ret} ${a/\~}@gentoo.org"
+ ret="${ret} ${a}"
done
done
else
- for a in "$@" ; do
- ret="${ret} ${a/\~}@gentoo.org"
- done
+ ret="$*"
fi
- echo ${ret}
+ printf '%s@gentoo.org ' ${ret//\~}
+ echo
}
submit_bug_stable() {
local msg="doit"
echo "Unable to read ebuild '${ebuild}'"
return 1
fi
- bugz post \
+ gbugz \
+ post \
--batch \
- -u vapier@gentoo.org \
- -t "Stabilize ${cat}/${pkg}" \
+ -t "${cat}/${pkg}: stabilize" \
-d "${msg}" \
-a "${maintainer}" \
- --cc="${cc}" \
+ --cc="${cc// /,}" \
-k STABLEREQ \
--product='Gentoo Linux' \
--component=Ebuilds \
- --priority=P2 \
+ --priority=Normal \
--severity=enhancement
}