/usr/local/CPAN/HTML-EP/HTML/EP/Install.pm
# -*- perl -*-
use strict;
use File::Path ();
use File::Find ();
use File::Copy ();
use File::Spec ();
use Cwd();
package HTML::EP::Install;
use vars qw($VERSION $install_files $install_cgi_files);
$VERSION = '0.02';
$install_files = '\.(?:html?|ep|gif|jpe?g)$';
$install_cgi_files = '\.(?:cgi|pl)$';
sub InstallFiles {
my($fromDir, $toDir, $extension, $mode) = @_ ? @_ : @ARGV;
$mode = 0644 unless $mode;
my $current_dir = Cwd::cwd();
chdir $fromDir || die "Failed to change directory to $fromDir: $!";
my $copySub = sub {
return unless $_ =~ /$extension/;
my $file = $_;
my $target_dir = File::Spec->catdir($toDir, $File::Find::dir);
(File::Path::mkpath($target_dir, 0, 0755)
or die "Failed to create $target_dir: $!")
unless -d $target_dir;
my $target_file = File::Spec->catfile($target_dir, $file);
File::Copy::copy($file, $target_file)
|| die "Failed to copy $File::Find::name to $target_file: $!";
chmod($mode, $target_file);
};
File::Find::find($copySub, ".");
chdir $current_dir || die "Failed to change directory to $current_dir: $!";
}
sub InstallHtmlFiles {
my($fromDir, $toDir) = @_ ? @_ : @ARGV;
InstallFiles($fromDir, $toDir, $install_files);
}
sub InstallCgiFiles {
my($fromDir, $toDir) = @_ ? @_ : @ARGV;
InstallFiles($fromDir, $toDir, $install_cgi_files, 0755);
}