Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Script to update your PPM Repositories

by holli (Monsignor)
on Sep 02, 2005 at 12:06 UTC ( #488626=note: print w/ replies, xml ) Need Help??


in reply to Script to update your PPM Repositories

At work I am behind a restrictive firewall/proxy that won't let me ping outside. So I have modified your script to use LWP::UserAgent, thus checking the state of the repository via http.

#updateWorkingRepositories.pl use strict; use warnings; use PPM::Repositories; use Net::Ping; use PPM::Repositories; use LWP::UserAgent; my $ua = new LWP::UserAgent; $ua->env_proxy if defined $ENV{HTTP_proxy}; 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 = `ppm rep`; for (split /[\r\n]/, $result) { #parsing lines that looks like #[ 3] jenda my ($number, $repository) = $_ =~ /(\[[^>]*\]\s)(.*)/; if ($repository) { unless ($repository =~ /activestate/i) { print `ppm rep de +lete $repository` unless (/activestate/i); } } } } sub add_repositories { for ( keys %Repositories ) { my $repository = $_; my $location = $Repositories{$_}->{location}; my $domain = trim_domain($location); my $request = new HTTP::Request ("GET" => "http://$domain"); $request->proxy_authorization_basic($ENV{HTTP_proxy_user}, $EN +V{HTTP_proxy_pass}) if defined $ENV{HTTP_proxy}; my $response = $ua->request($request); if ( $response && $response->is_success ) { print "$repository is alive.\n"; print `ppm repository add $repository $location` . "\n\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; }


holli, /regexed monk/


Comment on Re: Script to update your PPM Repositories
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://488626]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (14)
As of 2015-07-29 20:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (269 votes), past polls