#!/usr/bin/perl -w
# Do a CPAN autobundle and archive it somewhere
# Run from cron as the same user you run CPAN as (probably root)
use strict;
require 5.8.0;
use Sys::Hostname;
use CPAN;
use CPAN::Config;
use File::Copy;
#------------Edit These
# Where your Bundle gets copied to (use trailing slash)
my $bundle_archive_dir = '/tmp/';
# user/group final Archive ownership
my $change_ownership = 1;
my $userid = 1000;
my $groupid = 100;
#------------Work
my $sysname = hostname;
my $local_bundle_home = "$CPAN::Config->{cpan_home}" . '/Bundle/';
my $holder;
die &locked if -e "$CPAN::Config->{cpan_home}/.lock";
&bundlearchive;
my $recent_bundle = $1 if $holder =~ /(?:Bundle\/)(Snapshot.*)/;
my $finaldestination = $bundle_archive_dir . $sysname . '-' . $recen
+t_bundle;
copy("$local_bundle_home$recent_bundle","$finaldestination")
or die "AutoBundle copy failed: $!";
chown $userid, $groupid, $finaldestination if $change_ownership > 0;
#------------Subs
sub bundlearchive {
open local(*STDOUT), '>', \$holder;
autobundle;
}
sub locked {
qx!logger Oops - $0 found a CPAN lockfile - the script is quitting!;
}
exit $?;
|