#!/bin/sh
. scripts/common

download() {
	local file="$1"
	local url="$2"
	local ret
	if [[ -f $file ]]; then
		return 0
	fi
	begin "Downloading $url to $file"; {
		if type aria2c >/dev/null 2>/dev/null; then
			(
			builtin cd "$(dirname "$file")"
			aria2c -j 10 -s 10 -o "$(basename "$file.tmp")" "$url" && mv "$file.tmp" "$file"
			)
			ret=$?
		elif type wget >/dev/null 2>/dev/null; then
			wget -c -O "$file.tmp" "$url" && mv "$file.tmp" "$file"
			ret=$?
		else
			curl -C - -o "$file.tmp" "$url" && mv "$file.tmp" "$file"
			ret=$?
		fi
		rm -f "$file.tmp"
	};
	[[ -z $ret ]] && end || end "not found"
	
	return $ret
}

cleanup() {
	local file
	for file in "$sourceDir/"*.bz2 "$sourceDir/"*.zip; do
		if [[ -f $file && ! -s $file ]]; then
			rm -f "$file"
		fi
	done
	exit
}

downloadPhp() {
	local filename
	local arch
	local compiler
	local nts
	local downloaded
	local type
	local snapVersion

	case "$phpVersion" in
	*-dev-*)
		type="snaps"
		snapVersion=-${phpVersion##*-}
		phpVersion=${phpVersion%-*}
		filename="php$phpVersion$snapVersion.tar.bz2"
		filename=${filename/0.-dev-/-}
		download "$sourceDir/php-$phpVersion$snapVersion.tar.bz2" "http://snaps.php.net/$filename"
		;;
	*)
		type="releases"
		filename="php-$phpVersion.tar.bz2"
		target="$sourceDir/$filename"
		download "$target" "http://$mirror/get/$filename/from/$mirror/mirror" \
		|| download "$target" "http://museum.php.net/php5/$filename"
		;;
	esac

	downloaded=
	for nts in '' '-nts'; do
		case "$phpVersion" in
		4.*|5.0.*|5.1.*)
			;;
		*)
			for compiler in "${compilers[@]}"; do
				for arch in "${arches[@]}"; do
					filename=php-$phpVersion$nts-Win32-$compiler-$arch$snapVersion.zip
					download "$sourceDir/$filename" "http://windows.php.net/downloads/$type/$filename"
					if [[ -s "$sourceDir/$filename" ]]; then
						downloaded=1
					fi
				done
			done
		esac
	done
	if [[ -z $downloaded ]]; then
		filename=php-$phpVersion-Win32.zip
		target="$sourceDir/$filename"
		download "$target" "http://$mirror/get/$filename/from/$mirror/mirror" \
		|| download "$target" "http://museum.php.net/php5/$filename"
	fi
}

trap cleanup exit

case $# in
0)
	foreachPhpVersion downloadPhp
	;;
1)
	loadPhpVersion "$1"
	downloadPhp
	;;
esac

exit 0
