Skip to content
Snippets Groups Projects
diffatt.sh 1.33 KiB
Newer Older
Andreas Dilger's avatar
Andreas Dilger committed
#!/bin/bash
# diffatt.sh - generate inspection template for attachment
if [ -z "$1" ]; then
	cat - 1>&2 <<- USAGE
	usage: $0 [-k] {attachment} [attachment ...]
	   -k:  keep attachment(s) for editing (delete otherwise)
	   attachment is an attachment number or a local patch filename
	USAGE
	exit 1
fi

export LANG=C
BUGZILLA=https://bugzilla.lustre.org/attachment.cgi
TMP=${TMP:-/tmp}

[ "$1" = "-k" ] && KEEP=yes && shift

FILE=$(mktemp -t)

for ATT in $*; do
	DO_KEEP=$KEEP
	if [ -f "$ATT" ]; then
		PATCH=$ATT
		BUG=N
		DO_KEEP=yes
	else
		BUG=$(wget --no-check-certificate -O - \
			$BUGZILLA?id=$ATT\&action=edit 2> /dev/null |
			perl -nle 'print $1 if /Details for Bug (\d+)/' -)
		PATCH=$TMP/att$ATT.patch
		wget --no-check-certificate -O $PATCH \
			$BUGZILLA?id=$ATT 2> /dev/null
	fi

	grep "not authorized" $PATCH && continue

	diffstat $PATCH | tee $FILE
	LOC=$(awk '/insertion/ { print $4 }' $FILE)
	[ -z "$LOC" ] && LOC=$(awk '/deletion/ { print $4 }' $FILE)

	# if it isn't a patch, just count all of the lines
	[ -z "$LOC" ] && $(grep -q "0 files changed" $FILE) &&
		LOC=$(cat $PATCH | wc -l)

	tee -a $PATCH <<- EOF
		Inspection Type: CODE
		Defect Count: N
		Size: $LOC LOC
		Developer: @sun.com
		Inspector: $USER@sun.com
		Inspection duration: N min
		Bug: $BUG
		Date: $(date +%Y-%m-%d)
	EOF

	[ "$DO_KEEP" = "yes" ] || rm $PATCH
done