package Net::Paraget::MirrorSetGatherer;
#
# $Id: MirrorSetGatherer.pm,v 1.2 2001/04/17 03:19:14 lrclause Exp $
#

use strict;
use English;
use IO::File;
use File::Spec;
use Carp;
use vars qw( $DEBUG );

use URI;

use Net::Paraget::Mirror;

use Class::MethodMaker
  list          => [ qw( set_dirs ) ],
  hash          => 'sets',
  new_hash_init => 'new';

sub gather
{
    my ( $self, $set_name ) = @_;
    
    my @mirrors;
    
    foreach my $set_dir ( $self->set_dirs() )
    {
	my $filename = File::Spec->catfile( $set_dir, $set_name );
	
	next unless -e $filename;
	
	push @mirrors, $self->get_mirrors_from_file( $set_name, $filename );
    }
    
    return @mirrors;
}



sub get_mirrors_from_file
{
    my ( $self, $set_name, $filename ) = @_;
    
    my $file = IO::File->new( $filename );
    
    unless ( $file )
    {
	carp "warn opening $filename: $ERRNO";
	return ();
    }
    
    my @mirrors;
    
    while ( my $line = $file->getline() )
    {
	# ignore comments
	$line =~ s/\#.*$//;

	# strip surrounding spaces
	$line =~ s/^\s+//;
	$line =~ s/\s+$//;
	
	next unless $line;
	
	my $mirror = Net::Paraget::Mirror->new( $line );
	$mirror->type( $set_name );
	
	push @mirrors, $mirror;
    }
    
    return @mirrors;
}

1;


syntax highlighted by Code2HTML, v. 0.9.1