#!/bin/sh
# 2005 (c) Etersoft www.etersoft.ru
# Public domain
# Open package Url in BROWSER
# :
# -  -
# -c - check URL
# -f - print failed url only
# -s - open source dir in browser
. /etc/rpm/etersoft-build-functions

[ -n "$BROWSER" ] || BROWSER=url_handler.sh

if [ "$1" == "-c" ] ; then
	shift
	CHECKONLY=1
fi

if [ "$1" == "-s" ] ; then
	shift
	ABOUTDIR=1
fi

if [ "$1" == "-f" ] ; then
	shift
	FAILEDONLY=1
	CHECKONLY=1
#	echog "Print only failed URL"
fi

if [ -n "$2" ] ; then
	# more than 1 arg
	PARALL=1
	test `ps a | wc -l` -gt 70 && sleep 3
fi

#build_list_and_args "$@"

for i in $@
do
	if [ -f $i ]
	then
		if [ -z ${i/*rpm/} ]
		then
			# it is rpm package
			RPM_URL=`rpm -qp --queryformat "%{URL}" $i`
		else
			CATSPEC="rpm -bE $i"
			RPM_URL=$($CATSPEC | get_var "Url")
			SOURCE=$($CATSPEC | get_var "Source")
			test -z ${RPM_URL} && { echog "Cannot get package Url from spec $i" ; exit 1; }
		fi
	else
		# will it package name
		RPM_URL=`rpm -q --queryformat "%{URL}" $i`
		SOURCE=`rpm -q --queryformat "%{SOURCE}" $i`
	fi
	if [ -z "$CHECKONLY" ] ; then
		if [ -n "$ABOUTDIR" ] ; then
			RPM_URL=`dirname $SOURCE`
		fi
		echog "Opening URL '$RPM_URL' in browser $BROWSER"
		$BROWSER $RPM_URL &
	else
		if [ -z "$PARALL" ] ; then
			echog -n "Checking URL '$RPM_URL' from package $i ..."
			GET $RPM_URL -s -d
		else
			( RESULT=`GET $RPM_URL -s -d` ;
			if [ -n "$FAILEDONLY" ] ; then
				test ${RESULT/ *} = "200" || printf "%-40s %s   %s\n" $i $RPM_URL "${RESULT}"
			else
				echog "Checking URL '$RPM_URL' from package $i ... $RESULT" ; 
			fi
			) &
		fi
	fi
done
