#!/bin/sh

SPECDIR=`rpm -E '%_specdir'`
SOURCEDIR=`rpm -E '%_sourcedir'`

#
# check scheme
#
CheckScheme()
{
	case $ARCHIVE in
		http://* | ftp://*)
			if wget -P $SOURCEDIR -nc $ARCHIVE ;then	# download
				SOURCE=$ARCHIVE
			else
				exit 1			# exit when failed download
			fi
			;;
		*)
			if [ -f $ARCHIVE ];then
				echo "move $ARCHIVE to $SOURCEDIR."
				mv $ARCHIVE $SOURCEDIR
				SOURCE=`basename $ARCHIVE`
			else
				echo "$ARCHIVE is not file." 1>&2
				exit 1
			fi
			;;
	esac 
}

#
# check suffix
#
CheckSuffix()
{
	case $ARCHIVE in
		*.tar.gz)
			BASENAME=`basename $ARCHIVE .tar.gz`
			SUFFIX=".tar.gz"
			;;
		*.tar.bz2)
			BASENAME=`basename $ARCHIVE .tar.bz2`
			SUFFIX=".tar.bz2"
			;;
		*.zip)
			BASENAME=`basename $ARCHIVE .zip`
			SUFFIX=".zip"
			;;
		*)
			echo "Unknown format." 1>&2
			exit 1
			;;
	esac
}

#
# output basic information
#
OutputBasicInfo()
{
cat > $SPECFILE << EOL
# Basic Information
Name:		$PKGNAME
Version:	$PKGVERSION
Release:	1%{?_dist_release}
License:	$LICENSE
Group:		ここにグループ名を記述してください(/usr/share/doc/rpm-`rpm --version | awk '{ print $3 }'`/GROUPS_for_vine.txt参照)
Source0:	$SOURCE
BuildRoot: %{_tmppath}/%{name}-%{version}-root

Vendor: Project Vine
Distribution: Vine Linux
Packager:	ここにtracのidを記述してください

Summary:	$SUMMARY
Summary(ja):	ここに日本語で概要を記述してください

# Dependency
# 以下に依存関係を記述してください。

%description

%description -l ja
ここに日本語で詳細を記述してください。

EOL
}

#
# Output prep section
#
OutputPrep()
{
	echo '%prep' >> $SPECFILE

	# setup corresponding to suffix
	case $SUFFIX in
		.tar.gz | .tar.bz2)
			echo '%setup -q' >> $SPECFILE
			;;
		.zip)
			echo '%setup -T %{name}-%{version}' >> $SPECFILE
			echo 'unzip -xq %{SOURCE0}' >> $SPECFILE
			;;	
	esac

	echo '' >> $SPECFILE
}

#
# Output build section
#
OutputBuild()
{
	echo '%build' >> $SPECFILE
	echo '%configure' >> $SPECFILE	# ToDo: check configure
	echo '%{__make} %{?_smp_mflags}' >> $SPECFILE

	echo '' >> $SPECFILE
}

#
# Output install section
#
OutputInstall()
{
cat >> $SPECFILE << EOL
%install
%{__rm} -rf \${RPM_BUILD_ROOT}
%{__make} install DESTDIR=\${RPM_BUILD_ROOT}

%find_lang %{name}


%clean
%{__rm} -rf \${RPM_BUILD_ROOT}


EOL
}

#
# Output file list
#
OutputFileList()
{
# ToDo: check file exists
cat >> $SPECFILE << EOL
%files -f %{name}.lang
%defattr(-,root,root)
%doc COPYING ChangeLog NEWS README

EOL
}

#
# Output ChangeLog
#
OutputChangeLog()
{
cat >> $SPECFILE << EOL
%changelog
* `LANG=C LANGUAGE=C LC_ALL=C date '+%a %b %d %Y'` Your Name <name@yours.example.com> $PKGVERSION-1`rpm -E '%{?_dist_release}'`
- initial build for Vine Linux
EOL
}

#
# main
#

# check arguments
if [ -z "$*" ]; then
	echo "Usage: `basename $0` source-archive"
	exit 1
fi

ARCHIVE=$1

CheckScheme
CheckSuffix

PKGNAME=`echo $BASENAME | sed -e 's/-[0-9][0-9.]*.*//'`
PKGVERSION=`echo $BASENAME | sed -e 's/^.*-\([0-9][0-9.]*.*\)/\1/'`
SOURCE=`echo $SOURCE | sed -e "s/$PKGNAME/%{name}/g" | sed -e "s/$PKGVERSION/%{version}/g"`

SPECFILE=${SPECDIR}/${PKGNAME}-vl.spec

# Output SPEC file.
OutputBasicInfo
OutputPrep
OutputBuild
OutputInstall
OutputFileList
OutputChangeLog

# Output result
echo "made $SPECFILE"
