From: Mike Frysinger Date: Mon, 19 Sep 2011 22:35:05 +0000 (-0400) Subject: more gentoo helpers X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=ef3257902512324b7412f698e01701fe0026da06;p=home.git more gentoo helpers --- diff --git a/.bin/bugz b/.bin/bugz deleted file mode 100755 index b1ca07a..0000000 --- a/.bin/bugz +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -e -cd /usr/local/src/pybugz -export PYTHONPATH=$PWD -cd bugz -exec ../bin/bugz "$@" diff --git a/.bin/bugz.git b/.bin/bugz.git new file mode 100755 index 0000000..b1ca07a --- /dev/null +++ b/.bin/bugz.git @@ -0,0 +1,5 @@ +#!/bin/sh -e +cd /usr/local/src/pybugz +export PYTHONPATH=$PWD +cd bugz +exec ../bin/bugz "$@" diff --git a/.bin/cvs-cleanup b/.bin/cvs-cleanup index 38c9d01..56bca49 100755 --- a/.bin/cvs-cleanup +++ b/.bin/cvs-cleanup @@ -1,8 +1,7 @@ #!/bin/bash find -name .cvsignore -exec rm {} \; -cvs up -C | \ - grep -v .cvsignore | \ - egrep -v '^(U|P|\?|\()' | \ +cvs up -C -I'!' | \ + grep -v -e .cvsignore -e '^[UP(]' | \ awk '{print $NF}' | \ grep -v cleanup >& cvsup cat cvsup | xargs rm -vrf diff --git a/.bin/ec-close b/.bin/ec-close new file mode 120000 index 0000000..fc468e2 --- /dev/null +++ b/.bin/ec-close @@ -0,0 +1 @@ +er-close \ No newline at end of file diff --git a/.bin/er-close b/.bin/er-close new file mode 100755 index 0000000..7c7c4e6 --- /dev/null +++ b/.bin/er-close @@ -0,0 +1,113 @@ +#!/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##*/} [ ...] + 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 diff --git a/.bin/gbugz b/.bin/gbugz index 6232c46..9dbec05 100755 --- a/.bin/gbugz +++ b/.bin/gbugz @@ -1,2 +1,2 @@ #!/bin/sh -exec bugz -u vapier@gentoo.org "$@" +exec ${0#g} -u vapier@gentoo.org "$@" diff --git a/.bin/gbugz.git b/.bin/gbugz.git new file mode 120000 index 0000000..c754979 --- /dev/null +++ b/.bin/gbugz.git @@ -0,0 +1 @@ +gbugz \ No newline at end of file diff --git a/.profile.d/gentoo.sh b/.profile.d/gentoo.sh index 04a6c32..31e64c5 100644 --- a/.profile.d/gentoo.sh +++ b/.profile.d/gentoo.sh @@ -122,22 +122,21 @@ att() { 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" @@ -167,17 +166,17 @@ submit_bug_stable() { 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 }