#!/bin/bash
. scripts/common

[[ $# != 3 ]] && die "Usage: $0 <phpVersion> <phpSourcePackage> <directory>"
phpVersion="$1"
phpSourcePackage="$2"
[[ -s $phpSourcePackage ]] || die "$phpSourcePackage not found as a file"
unpackDir="$3"
[[ -d $unpackDir ]] || die "$unpackDir not found as a directory"


begin "Cleaning $unpackDir"; {
	rm -rf "$unpackDir"
	rm -rf "$unpackDir.tmp"
	mkdir "$unpackDir/"
}; end

phpVersionMajor=$(getVersionPart 0 $phpVersion)
phpVersionMinor=$(getVersionPart 1 $phpVersion)

sourceFiles=(configure.in main/internal_functions.c.in)
if [[ $phpVersionMajor -ge 5 ]]; then
	pushv sourceFile "win32/build"
fi

headerDirs=(main TSRM Zend win32 ext/standard)
if [[ $phpVersionMajor -gt 5 ]] || [[ $phpVersionMajor -eq 5 && $phpVersionMinor -gt 0 ]]; then
	pushv headerDir ext/date
fi
if [[ $phpVersionMajor -lt 5 ]] || [[ $phpVersionMajor -eq 5 && $phpVersionMinor -lt 2 ]] || [[ $phpVersionMajor -eq 6 ]]; then
	pushv sourceFile README.CVS-RULES 
else
	pushv sourceFile README.SVN-RULES 
fi
if [[ $phpVersionMajor -lt 5 ]] || [[ $phpVersionMajor -eq 5 && $phpVersionMinor -lt 3 ]]; then
	pushv headerDir regex
fi
for headerDir in "${headerDirs[@]}"; do
	pushv sourceFile "$headerDir/*.h"
done

case "$phpVersion" in
*-dev-*)
	prefix="php${phpVersion/.0-dev-/-}"
	prefix="${prefix%-*}-*"
	;;
*)
	prefix="php-$phpVersion"
	;;
esac
sourcePaths=()
for sourceFile in "${sourceFiles[@]}"; do
	pushv sourcePath "$prefix/$sourceFile"
done
echo "Unpacking ${sourceFiles[@]} ..."; {
	rm -rf "$unpackDir.tmp" || die
	mkdir "$unpackDir.tmp" || die
	cd "$unpackDir.tmp" || die
	tar --wildcards -jxvf "$phpSourcePackage" "${sourcePaths[@]}" || die "failed unpacking"
	mv "$unpackDir.tmp/"$prefix/* "$unpackDir/"
	cd ..
	rm -rf "$unpackDir.tmp"
}

if [[ $phpVersionMajor -ge 5 ]] && [[ ! -d $develDir/win32build/build ]]; then
	mkdir -p "$develDir/win32build"
	cp -v -uaR "$unpackDir"/win32/build $develDir/win32build/build
fi
