#!/usr/bin/perl -w
#
# Using this:
#	download or construct the distribution .tar.gz for the perl module
#	 (perl Makefile.PL, make dist)
#	run perlmod2rpm <perlmod>.tar.gz
#	the RPM will be in /usr/src/redhat/RPMS/i386
#
# Currently this is specific to i386 and perl 5.005;
# slight tweaks are required to the RPM .spec file otherwise.
#
#
# perlmod2rpm 1.0 Bennett Todd <bet@mordor.net> Freely Redistributable
use strict;
use IO::File;
use Term::ReadLine;
use File::Basename;
#use Data::Dumper;
use Cwd;
use Fatal qw(IO::File::new close);
$0 = basename $0;

my $oldcwd = cwd;
chdir '/usr/src/redhat/SOURCES/' or die;

my ($mday,$mon,$year,$wday) = (localtime(time))[3..6];
my @M = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @D = qw(Sun Mon Tue Wed Thu Fri Sat);
$mon = $M[$mon];
$wday = $D[$wday];
$year += 1900;

my $th;

for (@ARGV) {
        $_ = "$oldcwd/$_";
        die "no such file $_" unless -f;
        my %d;
        if (/\.src\.rpm$/) {
                my $old = $_;
                $_ = `rpm2cpio $old|cpio -iuv \\*.tar.gz 2>/dev/null`;
                die "cannot find src in $old" if $?;
                chomp;
                $d{summ} = `rpm -qp --queryformat '%{SUMMARY}' $old`;
                $d{desc} = `rpm -qp --queryformat '%{DESCRIPTION}' $old`;
        }
        die "$_: only feed me src rpms or tarballs" unless /\.tar\.gz$/;
        $d{vers} = $1 if s/-([^-]+)\.tar\.gz$//;
        $d{name} = basename($_);
        ($d{cpan}) = /^([^-]+)/;
        $d{summ} = "perl module $d{name}" unless defined $d{summ};
        $d{desc} = "perl module $d{name}" unless defined $d{desc};
        #print Data::Dumper->Dump([\%d], [qw(%d)]);
        for (qw(name vers cpan)) {
                if (!defined($d{$_})) {
                        $th = Term::ReadLine->new($0) unless defined $th;
                        $d{$_} = $th->readline("$_: ");
                }
        }
        IO::File->new(">/usr/src/redhat/SPECS/$d{name}.spec")->print(<<Eof);
%define name $d{name}
%define vers $d{vers}
%define cpan $d{cpan}
Summary: $d{summ}
Name: %{name}
Version: %{vers}
Release: 1
Copyright: Freely distributable
Packager: Steve Tell <tell\@telltronics.org>
Group: Perl
Source: http://www.telltronics.org/software/%{cpan}/%{name}-%{vers}.tar.gz
Requires: perl >= 5.004
BuildRoot: /var/tmp/%{name}-rpmroot

%description

$d{desc}

%prep
%setup

%build
perl Makefile.PL PREFIX=\$RPM_BUILD_ROOT/usr && make

%install
PERLVER=`perl -e 'printf "%.3f", \$];'`
# mkdir -p \$RPM_BUILD_ROOT/usr/lib/perl5/site_perl/\$PERLVER/i386-linux
make PREFIX=\$RPM_BUILD_ROOT/usr \\
     install

find \$RPM_BUILD_ROOT -name perllocal.pod | perl -lne unlink

%files
/usr/*

%changelog
* $wday $mon $mday $year <tell\@velio.com>
  - Initial Wrap
Eof
        die if system "rpm -ba /usr/src/redhat/SPECS/$d{name}.spec";
}
