#!/bin/sh
# 2005-2006, 2009 (c) Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain
#
# Открываем багзиллу на багах пакета
# Параметры:
# rpmbugs название спек-файла | название пакета | -qf путь к файлу, который лежит в пакете
# TODO: окошко вешания баги (использовать перловые возможности?)
# TODO: нормальную обработку парамеров

# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
load_mod rpm web

BUGZILLAURL="https://bugzilla.altlinux.org"
PRODUCT=Sisyphus


show_bugs()
{
	URL=$1
	if [ -z "$TEXT" ] ; then
		#echog "Opening URL '$URL' in browser $BROWSER"
		docmd $BROWSER $URL
	else
		#echo "@Fetching from '$URL'..."
		# FIXME: BROWSER can be some unknown program called links
		docmd $BROWSER -dump $URL
	fi
}

show_bugbyid()
{
#	TEXT=1
	local URLSHOWBUG="$BUGZILLAURL/show_bug.cgi?id=$1"
	show_bugs "$URLSHOWBUG"
}

clean_args()
{
	if [ -n "$2" ] && rhas "$1" ".spec" ; then
		shift
	fi
	echo "$@"
}

check_qf()
{
	[ "$1" = "-qf" ] || return
	shift
	docmd $EPMCMD -qf --short "$1" | xargs --no-run-if-empty -- $ETERBUILDBIN/rpmbugs
}


mygetopts()
{

if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
	echog "rpmbugs - open bugs in BROWSER"
	echog "rpmbugs [-t] [spec] | bug number | package name | -qf command_name | /path/to/file"
	echo
	echog "Options:"
	echog "   -t  list in text console"
	exit 0
fi

if [ "$1" = "-n" ] ; then
	shift
	NEWBUG=1
fi

if [ "$1" = "-t" ] ; then
	shift
	TEXT=1
	which links >/dev/null && BROWSER=links
fi

}

parse_cmd_pre_spec "$@"
LISTNAMES=$(clean_args $LISTNAMES $LISTRPMARGS $LISTARGS)
mygetopts $LISTARGS

check_qf $LISTNAMES && exit

if ! check_display ; then
	TEXT=1
	which links >/dev/null && BROWSER=links
fi


is_number()
{
	rhas "$@" "^[0-9]+$"
}

if is_number "$LISTNAMES" ; then
	show_bugbyid "$LISTNAMES"
	exit
fi

i=$LISTNAMES
	if [ -f $i ]
	then
		# TODO: strange code
		if [ -z ${i/*rpm/} ]
		then
			# it is rpm package
			PKGNAME=$(querypackage $i NAME)
		else
			PKGNAME=$(get_name $i)
			test -z ${PKGNAME} && fatal "Cannot get package name from $i"
		fi
	else
		# yes, DD=$(false) || DD=other works
		PKGNAME=$(querypackage $i NAME) || PKGNAME=$i
	fi

	if [ -n "$NEWBUG" ] ; then
		fatal "Do not realized yet. Welcome to developing!"
		#URL=""
		echog "Enter Summary for package $PKGNAME and press Enter:"
		read SUMMARY
		echog "Enter description (finish with Ctrl-D):"
		ID=`altbug --pkg "$PKGNAME" --subj "$SUMMARY" | tail -n 1 | sed -e "s|^.*#||" -e "s|:.*$||"`
		#altbug --pkg "$PKGNAME" --subj "$SUMMARY"
		show_bugbyid $ID
	else
		URLBUGLIST="$BUGZILLAURL/buglist.cgi?product=$PRODUCT&component=$PKGNAME&component_type=equals&simple=1"
		show_bugs "$URLBUGLIST" | grep "@"
	fi
