#!/bin/bash

SELF=$(basename $0)
HOMEDIR=$PWD

if [ $# = 0 ]; then
	cat << EOF
usage: $SELF <perl-module>

Convert a perl-module into a Slackware package.
EOF
	exit 1
fi

SEEK=${1//::/\/}
DIRNAME=${1//::/-}
FOUND=""

for SEARCH in $(perl -e 'print("@INC");'); do
	if [ -r "$SEARCH/$SEEK/.packlist" ]; then
		FOUND="$SEARCH/$SEEK/.packlist"
		break
	elif [ -r "$SEARCH/auto/$SEEK/.packlist" ]; then
		FOUND="$SEARCH/auto/$SEEK/.packlist"
		break
	fi
done

if [ -z "$FOUND" ]; then
	echo "$SELF: could not find .packlist for $1"
	exit 1
fi

TMPDIR=/var/tmp/$SELF.$$
mkdir -p $TMPDIR
trap "rm -rf $TMPDIR" INT EXIT
(cat $FOUND; echo $FOUND) | cpio --quiet -pd $TMPDIR || exit 1
cd $TMPDIR || exit 1
mkdir -p install

NAME=$(echo ${1//::/-} | tr [[:upper:]] [[:lower:]])
VERSION=$(perl -e "use $1; print \$$1::VERSION;")

# Can't get version programatically, try CPAN build directory
if [ -z "$VERSION" ]; then
	if [ -r ~/.cpan/build/$DIRNAME-* ]; then
		VERSION=~/.cpan/build/$DIRNAME-*
		VERSION=$(basename $VERSION)
		VERSION=${VERSION#$DIRNAME-}
	fi
fi

cat << EOF > install/slack-desc
perl-$NAME: 
perl-$NAME: $1 Perl module version $VERSION
perl-$NAME: 
EOF
yes | makepkg $HOMEDIR/perl-$NAME-$VERSION-i386-1.tgz
