#!/bin/sh
# 2005 (c) Etersoft www.etersoft.ru
# GS - get source
# Public domain
# 18.08.05, 03.09.05
#  ,     gz/bz2/tgz/zip
# :
# -  -
# TODO: -h (build in hasher), -s (sign for upload)
# -a - get all source
# check for the same file with other compression

. /etc/rpm/etersoft-build-functions

WEXT=""
GETSOURCE=""
LOADLIST="0"

#############################
name=${0##*/}
Descr="$name - get sources for spec"
Usage="Usage: $name [-a ] spec..."

phelp()
{
	echog "$Descr"
	echog "$Usage"
	echog "Options:"
	echog " -a - get all source (not only 0)"
}

while getopts :ha opt; do
    case $opt in
    h) phelp; exit 0;;
    a) LOADLIST=" 0 1 2 3 4 5" ;;
    +?) echog "$name: options should not be preceded by a '+'." 1>&2; exit 2;;
    ?)  echog "$name: $OPTARG: bad option.  Use -h for help." 1>&2 ; exit 2;;
    esac
done
 
# remove args that were options
shift $((OPTIND - 1))

if [ $# -lt 1 ]; then
    echog "$Usage"
	echog "Use -h for help."
    exit
fi

get_archive()
{
	#TODO: check for gz
	URL=${GETSOURCE/.tar.bz2/}
	wget -c "$URL.$1" || return
	WEXT=`basename $URL`
	echog -n "Converting to $WEXT.bz2..."
}


function get_gz()
{
	get_archive tar.gz || return
	gunzip $WEXT.tar.gz && bzip -f --best $WEXT.tar
}

function get_tgz()
{
	get_archive tgz || return
	gunzip $WEXT.tgz &&	bzip -f --best $WEXT.tar
}

function get_zip()
{
	get_archive zip || return
	mkdir $WEXT.zip.dir || return
	cd $WEXT.zip.dir
	unzip -q ../$WEXT.zip &&
	tar cf - . | bzip -f --best > ../$WEXT.tar.bz2
	cd ..
	rm -rf $WEXT.zip.dir
}

function dir_name()
{
	rm .listing
	#wget `dirname $MAINSOURCE` --dont-remove-listing
	
}

function get_source()
{
	CATSPEC="rpm -bE $1"
	GETSOURCE=$($CATSPEC | get_var "$2")
}

build_list_and_args "$@"

# $LISTARGS
for i in $LISTNAMES
do
	for nn in "" $LOADLIST
	do
		get_source $i "Source$nn"
		test -z "$GETSOURCE" && { echog "Skip Source${nn} from $i" ; continue ; }
		pushd $RPMDIR/SOURCES
		echog "Try to load $GETSOURCE for $i"
		wget -c "$GETSOURCE" || get_gz || get_tgz || get_zip || dir_name || { echog "Error: Cannot retrieve $GETSOURCE" ; exit 1 ; }
		echo "DONE"
		popd
	done
done

add_changelog -e "- new version" $LISTNAMES
exit 0

