Blame scripts/check-embargoed-bugz
|
Takashi Iwai |
f5044f |
#!/bin/bash
|
|
Takashi Iwai |
f5044f |
#
|
|
Takashi Iwai |
f5044f |
# Scan the bug numbers in commit logs and check whether it's still embargoed
|
|
Takashi Iwai |
f5044f |
#
|
|
Takashi Iwai |
f5044f |
# Put me on pre-push git hook
|
|
Takashi Iwai |
f5044f |
#
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
if [ ! -x /usr/bin/jq ]; then
|
|
Takashi Iwai |
f5044f |
echo >&2 "embargoed check: jq is not present, please install jq package"
|
|
Takashi Iwai |
f5044f |
exit 1
|
|
Takashi Iwai |
f5044f |
fi
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
remote="$1"
|
|
Takashi Iwai |
f5044f |
url="$2"
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
z40=0000000000000000000000000000000000000000
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
jsonf="$(mktemp)" || exit 1
|
|
Takashi Iwai |
f5044f |
trap "rm \"$jsonf\"" 0 1 2 3 15
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
curl -s -o "$jsonf" https://smash.suse.de/api/embargoed-bugs/ || exit 1
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
ids=$(jq -r '.[].bug.name | capture("^bnc#(?<id>[[:digit:]]+)").id' "$jsonf") \
|
|
Takashi Iwai |
f5044f |
|| exit 1
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
declare -A emb_bugs
|
|
Takashi Iwai |
f5044f |
for e in $ids; do
|
|
Takashi Iwai |
f5044f |
emb_bugs[$e]=1
|
|
Takashi Iwai |
f5044f |
done
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
while read local_ref local_sha remote_ref remote_sha
|
|
Takashi Iwai |
f5044f |
do
|
|
Takashi Iwai |
f5044f |
test "$local_sha" = $z40 && continue
|
|
Takashi Iwai |
f5044f |
case "$remote_ref" in
|
|
Takashi Iwai |
255306 |
*_EMBARGO/*|*_EMBARGO)
|
|
Takashi Iwai |
f5044f |
continue;;
|
|
Takashi Iwai |
f5044f |
refs/heads/users/*/for-next)
|
|
Takashi Iwai |
f5044f |
base=${remote_ref#refs/heads/users/*/}
|
|
Takashi Iwai |
f5044f |
base=${base%/*}
|
|
Takashi Iwai |
f5044f |
;;
|
|
Takashi Iwai |
f5044f |
refs/heads/cve-*|refs/heads/SLE*|refs/heads/openSUSE*)
|
|
Takashi Iwai |
f5044f |
base=${remote_ref#refs/heads/}
|
|
Takashi Iwai |
f5044f |
;;
|
|
Takashi Iwai |
f5044f |
*)
|
|
Takashi Iwai |
f5044f |
continue;;
|
|
Takashi Iwai |
f5044f |
esac
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
if [ "$remote_sha" = $z40 ]; then
|
|
Takashi Iwai |
f5044f |
range="refs/remotes/origin/$base..$local_sha"
|
|
Takashi Iwai |
f5044f |
else
|
|
Takashi Iwai |
f5044f |
range="$remote_sha..$local_sha"
|
|
Takashi Iwai |
f5044f |
fi
|
|
Takashi Iwai |
f5044f |
bugs=$(git log "$range" | grep -E '\(bsc|bnc|boo)#?[0-9]\+' | sed -e's/[^a-z0-9#]/ /g')
|
|
Takashi Iwai |
f5044f |
test -z "$bugs" && continue
|
|
Takashi Iwai |
f5044f |
for w in $bugs; do
|
|
Takashi Iwai |
f5044f |
case "$w" in
|
|
Takashi Iwai |
f5044f |
bnc\#[0-9]*|bsc\#[0-9]*|boo\#[0-9]*)
|
|
Takashi Iwai |
f5044f |
bug=${w#b*#}
|
|
Takashi Iwai |
f5044f |
if [ -n "${emb_bugs[$bug]}" ]; then
|
|
Takashi Iwai |
f5044f |
echo >&2 "Found EMABARGO bug (in bsc#$bug) at $local_ref, not pushing"
|
|
Takashi Iwai |
f5044f |
exit 1
|
|
Takashi Iwai |
f5044f |
fi
|
|
Takashi Iwai |
f5044f |
esac
|
|
Takashi Iwai |
f5044f |
done
|
|
Takashi Iwai |
f5044f |
done
|
|
Takashi Iwai |
f5044f |
|
|
Takashi Iwai |
f5044f |
exit 0
|