/[perl]/mirror_cpan.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /mirror_cpan.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by dpavlin, Thu Sep 4 14:39:17 2003 UTC revision 1.5 by dpavlin, Tue Jan 20 19:48:05 2004 UTC
# Line 35  use File::Basename qw(dirname); Line 35  use File::Basename qw(dirname);
35  use File::Spec::Functions qw(catfile devnull);  use File::Spec::Functions qw(catfile devnull);
36  use File::Find qw(find);  use File::Find qw(find);
37  use Getopt::Long;  use Getopt::Long;
38    use IO::Zlib;
39    
40  ## LWP -  ## LWP -
41  use URI ();  use URI ();
# Line 129  BEGIN { Line 130  BEGIN {
130    
131    sub clean_unmirrored {    sub clean_unmirrored {
132      find sub {      find sub {
133        return if /\.readme$/; # don't erase readme files        return if /\.readme.gz$/; # don't erase readme files
134        check_readme($File::Find::name);        check_readme($File::Find::name);
135        return unless -f and not $mirrored{$File::Find::name};        return unless -f and not $mirrored{$File::Find::name};
136        print "$File::Find::name ... removed\n" if $TRACE;        print "$File::Find::name ... removed\n" if $TRACE;
137        unlink $_ or warn "Cannot remove $File::Find::name: $!";        unlink $_ or warn "Cannot remove $File::Find::name: $!";
138        my $path = $File::Find::name;        my $path = $File::Find::name;
139        if ($path =~ s/(\.tar\.gz|\.tgz)/.readme/g && -f $path) {        if ($path =~ s/(\.tar\.gz|\.tgz)/.readme.gz/g && -f $path) {
140          # only if we erase archive also!          # only if we erase archive also!
141          unlink $path or warn "Cannot remove $path: $!";          unlink $path or warn "Cannot remove $path: $!";
142        }        }
# Line 147  BEGIN { Line 148  BEGIN {
148      my $path = shift;      my $path = shift;
149      # fixup some things      # fixup some things
150      my $readme_path = $path;      my $readme_path = $path;
151      $readme_path =~ s/\.(tar\.gz|\.tgz)/.readme/g || return;    # just .tar.gz is supported!      $readme_path =~ s/\.(tar\.gz|\.tgz)/.readme.gz/g || return; # just .tar.gz is supported!
152    
153      my $at = Archive::Tar->new($path) or die "Archive::Tar failed on $path\n";      my $at = Archive::Tar->new($path) or die "Archive::Tar failed on $path\n";
154    
155      if (! -f $readme_path) {      if (! -f $readme_path) {
156        # create readme file        # create readme file
157        my @readmes = sort grep m{^[^/]+/README\z}, $at->list_files();        my @readmes = sort grep m{^[^/]+/README\z}i, $at->list_files();
158        my $readme;        my $readme;
159    
160        if ($readme = shift @readmes) {        if ($readme = shift @readmes) {
161          open(R, "> $readme_path") || die "Cannot create $readme_path: $!";          my $fh = IO::Zlib->new($readme_path, "wb");
162          print R $at->get_content($readme);          if (defined $fh) {
163          close(R);                  print $fh $at->get_content($readme);
164                    $fh->close;
165            } else {
166                    die "Cannot create $readme_path: $!";
167            }
168    
169          print "$readme_path ... created\n" if $TRACE;          print "$readme_path ... created\n" if $TRACE;
170    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.26