]> git.wh0rd.org - home.git/blob - .profile.d/aliases.gentoo.sh
import vapier
[home.git] / .profile.d / aliases.gentoo.sh
1 cvs_gentoo_url() {
2 _cvs_gentoo_url() {
3 if [[ -n $2 ]] ; then
4 echo "Usage: cvs_gentoo_url <file>[:rev1[:rev2]]"
5 return 1
6 fi
7
8 # spec has the form file:rev1[:rev2]
9 # rev2 defaults to rev1-1
10 export IFS=:
11 set -- $1
12 unset IFS
13
14 local file=$1
15 if [[ ! -e ${file} ]] ; then
16 echo "file '${file}' does not exist"
17 return 1
18 fi
19 local dir="."
20 [[ ${file} == */* ]] && dir=${file%/*}
21 file=${file##*/}
22
23 local rev2=$2
24 if [[ -z ${rev2} ]] ; then
25 rev2=$(
26 cd ${dir}
27 export IFS=/
28 set -- $(grep /${file}/ CVS/Entries)
29 unset IFS
30 echo $3
31 )
32 if [[ ${rev2} == "0" ]] ; then
33 # new file
34 rev2="1.1"
35 else
36 # existing file, bump rev automatically
37 rev2="1.$((${rev2#1.}+1))"
38 fi
39 fi
40 local rev2r=${rev2#1.}
41 local rev1=${3:-1.$((rev2r - 1))}
42
43 local cvsroot=$(<${dir}/CVS/Repository)
44 if [[ ${cvsroot} == gentoo-x86* ]] ; then
45 cvsroot=${cvsroot#gentoo-x86}
46 cvsroot=${cvsroot#/}
47 fi
48
49 local urirev
50 [[ ${rev2} == "1.1" || ${rev1} == "${rev2}" ]] \
51 && urirev="?rev=${rev2}" \
52 || urirev="?r1=${rev1}&r2=${rev2}"
53 echo "http://sources.gentoo.org/${cvsroot}/${file}${urirev}"
54 }
55 local f
56 for f in "$@" ; do
57 _cvs_gentoo_url "${f}"
58 done
59 unset _cvs_gentoo_url
60 }
61
62
63 er() {
64 [[ ! -e ChangeLog ]] \
65 && echo "No ChangeLog" \
66 && return 1
67 echangelog "$@" || return 1
68 repoman commit -m "$@" || return 1
69 }
70 att() {
71 declare url=$1 tmp=$(mktemp) filename || return 1
72 [[ $url == */* ]] || url="http://bugs.gentoo.org/attachment.cgi?id=$url"
73 eval $(wget -S -O"$tmp" "$url" 2>&1 | tee /dev/tty | \
74 grep 'Content-disposition:' | sed 's/.* //') && \
75 mv "$tmp" "$filename" && \
76 chmod $(printf "%03o" "$((0666 & ~$(umask)))") "$filename" && \
77 ls -l "$filename" && \
78 return 0
79 rm -f "$tmp"
80 return 1
81 }
82 arch_emails() {
83 local a ret=""
84 if [[ $@ == *.ebuild* ]] ; then
85 local e keys
86 for e in "$@" ; do
87 keys=$(sed -n '/^KEYWORD/{s:.*=::;s:"::g;p}' ${e})
88 for a in ${keys} ; do
89 [[ ${a} != ~* ]] && continue
90 ret="${ret} ${a/\~}@gentoo.org"
91 done
92 done
93 else
94 for a in "$@" ; do
95 ret="${ret} ${a/\~}@gentoo.org"
96 done
97 fi
98 echo ${ret}
99 }
100 submit_bug_stable() {
101 local msg="doit"
102 if [[ $1 == "-m" ]] ; then
103 msg=$2
104 shift 2
105 fi
106 if [[ -z $1 ]] || [[ -n $2 ]] ; then
107 echo "Usage: submit_bug_stable <ebuilds>"
108 return 1
109 fi
110 local maintainer=$(xml sel -t -v pkgmetadata/herd metadata.xml)
111 if [[ ${maintainer} == "no-herd" ]] ; then
112 maintainer=$(xml sel -t -v pkgmetadata/maintainer/email metadata.xml)
113 elif [[ -n ${maintainer} ]] ; then
114 maintainer="${maintainer}@gentoo.org"
115 fi
116 if [[ -z ${maintainer} ]] ; then
117 echo "No maintainer found in metadata.xml"
118 return 1
119 fi
120 local cat=$(basename $(dirname $(pwd)))
121 local pkg=${1%.ebuild}
122 local ebuild=${pkg}.ebuild
123 local cc=$(arch_emails ${ebuild} | sed -r -e 's:([^ ]*-fbsd|mips)@[^ ]*::g')
124 if [[ -z ${cc} ]] ; then
125 echo "Unable to read ebuild '${ebuild}'"
126 return 1
127 fi
128 bugz post \
129 -u vapier@gentoo.org \
130 -t "Stabilize ${cat}/${pkg}" \
131 -d "${msg}" \
132 -a "${maintainer}" \
133 --cc="${cc}" \
134 -U "" \
135 -k STABLEREQ
136 }
137
138 eskeys() {
139 local k cat
140 if [[ ! -e ChangeLog ]] ; then
141 # running in a category rather than package
142 cat="/"
143 fi
144 [[ -z $* ]] && set -- arm m68k s390 sh
145 for k in "$@" ; do
146 local list="$(grep "^KEYWORDS=.*~${k}\>.*[^~]x86" *${cat}*d -l)"
147 [[ -z ${list} ]] && continue
148 sed -i "1s:.*:# Copyright 1999-$(date +%Y) Gentoo Foundation:" ${list}
149 ekeyword ${k} ${list}
150 done
151 }
152 _erit() {
153 local msg=$1 ; shift
154 [[ $1 == [[:digit:]]* ]] && msg="$msg #$1" && shift
155 echo repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
156 repoman commit -m "$(echo $@ | sed 's: :/:g') $msg"
157 }
158 erstable() { _erit stable "$@" ; }
159 erlove() { _erit love "$@" ; }