#updateWorkingRepositories.pl
use strict;
use warnings;
use PPM::Repositories;
use Net::Ping;
remove_non_active_state_repositories();
add_repositories();
#remove all repositories, except the repositories that come installed by default with
ActiveState.
sub remove_non_active_state_repositories {
my @repositories;
my $result = `ppm3 rep`;
for (split /[\r\n]/, $result) {
#parsing lines that looks like
#[ 3] jenda
my ($number, $repository) = $_ =~ /(\[[^>]*\]\s)(.*)/;
if ($repository) {
unless ($repository =~ /activestate/i) {
####
$repository` unless (/activestate/i); }
}
}
}
sub add_repositories {
for ( keys %Repositories )
{
my $repository = $_;
my $location = $Repositories{$_}->{location};
my $domain = trim_domain($location);
my $p = Net::Ping->new('icmp');
if ( $p->ping($domain) ) {
print "$repository is alive.\n";
##
##
} else {
print "$repository is dead.\n";
}
}
}
#function that trims a domain
sub trim_domain {
$_ = my $original_input = shift;
$_ =~ s/^\s+//; #strip spaces at start of string
$_ =~ s/\s+$//; #strip spaces at end of string
$_ =~ s|^http://||; # strip http:// at begining
$_ =~ s|/.*$||; # strip everything after the first /
my $trimmed_domain = $_;
unless ($trimmed_domain) {
logMessage("trim_domain had a problem trimming $original_input");
carp ("trim_domain had a problem trimming $original_input");
$trimmed_domain = "$original_input couldn't be trimmed in trim_domain";
}
return $trimmed_domain;
}