#!/bin/sh
#
# create RPM directory tree like /usr/src/vine and set ~/.rpmmacros
#
# Written on Thu Jul 27 2000 by Toru Sagami <czs14350@mb.infoweb.ne.jp>
# - first shakedown for Vine
# modify grammer and dir name by Jun Nishii <jun@vinelinux.org>

# requires: rpm > 3.0

CMDNAME=`basename $0`

show_usage () {
  echo "$CMDNAME:"
  echo "create \"rpm\" top directory tree and set ~/.rpmmacros"
  echo "usage: $CMDNAME TOP_DIRECTORY"
  exit 1
}

rpm3var () {
	var=`rpm --showrc \
	 | awk "/-[0-9]+[:=][[:blank:]]+$1[[:blank:]]/ {print \\$3}"`
	while test -n "`echo $var | egrep '%\{[_a-zA-Z]+\}'`"; do
		v=`echo $var | sed 's/.*%{\([_a-zA-Z]\+\)}.*/\1/'`
		w="`rpm3var $v`"
		var=`echo $var | sed "s,%{\\([_a-zA-Z]\\+\\)},$w,g"`
	done
	echo $var
}

getrpmmacro () {
	macro=`rpm --showrc | grep ^.*[0-9][:=][[:space:]]"$1" \
	 | sed "s/^.*$1[[:space:]]//"`
	echo $macro
}

createRPMdir () {
mkdir -p $1/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
mkdir -p $1/RPMS/noarch
case "`uname -m`" in
	*86|x86_64)
	mkdir -p $1/RPMS/{i386,i586,i686}
	;;
	x86_64)
	mkdir -p $1/RPMS/x86_64
	;;
	sparc|sparc64)
	mkdir -p $1/RPMS/{sparc,sparc64}
	;;
	ppc*)
	mkdir -p $1/RPMS/{ppc,ppc64}
	;;
	alpha)
	mkdir -p $1/RPMS/alpha
	;;
	# dont know about that :-)
	*)
	mkdir -p $1/RPMS/{`uname -m`}
	;;
esac
}

# arg process
if [ $# = 0 ]; then
  show_usage
elif [ -z $HOME ]; then
  echo "$CMDNAME: \$HOME is not set" && exit 1
elif [ ! -x /bin/rpm ]; then
  echo "$CMDNAME: /bin/rpm not found" && exit 1
elif [ ! -d $1 ]; then
  echo "$CMDNAME: $1 is not directory" && exit 1
elif [ ! -w $1 ]; then
  echo "$CMDNAME: $1 Permission denied" && exit 1
fi

# nan ka hen dakedo iika
pushd $1 > /dev/null 2>&1
TOPDIR=`pwd`
popd > /dev/null 2>&1

TOPDIR=$TOPDIR/rpm
RPMMACROS=$HOME/.rpmmacros

createRPMdir $TOPDIR


if [ ! -w $RPMMACROS ]; then
# create simplest macros
cat << EOF >> $RPMMACROS
### added by $CMDNAME. see /usr/lib/rpm/macros for more.
%_topdir		$TOPDIR
EOF

# we dont want packager tag to be replaced
PACKAGER=`getrpmmacro packager`
if [ -z "$PACKAGER" ] ; then
	PACKAGER="$(whoami) <$(whoami)@$(hostname)>"
	cat << _EOF_ >> $RPMMACROS
%packager		$PACKAGER
_EOF_
fi
fi

echo "$CMDNAME: created rpm tree in $TOPDIR and $RPMMACROS."
exit 0
