CPAN-RPM
view release on metacpan or search on metacpan
return if defined $info{"no-upgrade-chk"};
return if !$VERSION;
print "Upgrade check\n";
eval {
alarm(5);
$SIG{ALRM} = sub {
die "Network too slow, check elapsed...\n";
};
local $_ = http_get("$LATEST_MOD/CPAN::RPM");
$info{latestversionavailable} = $1 if /"version"\s*:\s*"?([\d\.\_\-]+)"?/;
};
alarm(0);
if ($info{latestversionavailable} and $info{latestversionavailable} gt $VERSION) {
local $\ = $/;
print "";
print "* A newer version of this program is now available. To upgrade";
print "* enter the following command: $0 --upgrade\n";
}
return $info{latestversionavailable};
}
sub upgrade {
$info{install}++;
die "Current version unclear!\n" unless $VERSION;
my $ver = chkupgrade();
die "Upgrade version unclear!\n" unless $ver;
print "Current ver: $VERSION\n";
print "Latest ver: $ver\n";
if ($VERSION ge $ver) {
print "Already up to date.\n";
exit;
}
print "Upgrading...\n";
my $tarball = get_cpan_api({ dist => "CPAN::RPM" });
if (!$tarball or !-s $tarball) {
local $\ = $/;
print "\nERROR: Unable to retrieve tarball, please visit our web\n";
print "site at: https://github.com/ekkis/cpan2rpm\n";
print "to download the latest version.\n";
exit(-1);
}
my @ret = qx|$RPM -ta $tarball 2>&1|;
die "upgrade(): $!" if $?;
/Wrote:\s+(.*)$/ && ($info{rpm} = $1) && last for reverse @ret;
inst_rpm(\%info);
exit;
}
sub changelog {
my @dow = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
my @mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun"
, "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
);
return sprintf("%s %s %d %d %s"
, $dow[(localtime)[6]]
, $mon[(localtime)[4]]
, (localtime)[3]
, 1900 + (localtime)[5]
, sprintf("%s\@%s", (getpwuid($<))[0], hostname())
);
}
sub trim {
map { $_ ||= ""; s/^\s+//; s/\s+$//; } @_;
unless (defined wantarray()) {
$_ ||= ""; s/^\s+//; s/\s+$//;
}
$_[0] if @_ == 1;
}
# dirty way to untaint stuff to make suExec happy
sub untaint {
my $k = shift;
my %x; $x{$k} = 1;
return (keys %x)[0];
}
sub debug {
my $msg = shift;
my $level = shift || 1;
$info{debug} ||= 0;
print "> $msg\n" if $level <= $info{debug};
}
sub syntax {
my $args = shift;
my $warn = shift;
print "Error: $warn\n\n" if $warn;
local $_ = <<EOF;
This script automates the creation of RPMs from CPAN modules.
For further information please see the man page.
EOF
s/^\s+//mg; print;
print "\nSyntax: cpan2rpm [options] <module>\n\n";
print "Where <module> is either the name of a Perl module (e.g.\n";
print "Proc::Daemon) or of a tarball (e.g. Proc-Daemon-0.02.tar.gz),\n";
print "and [options] is any of the following:\n\n";
for (sort keys %$args) {
my ($arg) = split /[:=|]/;
$arg = "-$arg" if length($arg) > 1;
$arg = "-$arg" if $arg;
printf(" %-15s %s\n", $arg, $args->{$_});
}
print "\n";
exit(1);
}
1; # yipiness
__END__
=head1 NAME
cpan2rpm - A Perl module packager
=head1 SYNOPSIS
( run in 1.079 second using v1.01-cache-2.11-cpan-e1769b4cff6 )