/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);
}