#!/usr/bin/perl

use strict;

my $sourcedir = shift;
my $targetdir = shift;

die "sourcedir ($sourcedir) does not exist" unless ( -e $sourcedir && -d $sourcedir );
die "targetdir ($targetdir) does not exist" unless ( -e $targetdir && -d $targetdir );

open(FILES, " find $sourcedir -type f |") 
	or die("unable to setup pipe from find on sourcedir");

my @files;

while (<FILES>)
{
	chomp;
	die "missing prefix for file $_"
		if ( substr($_, 0, length($sourcedir)+1) ne "$sourcedir/" );
	my $filename = substr($_, length($sourcedir)+1);

	next if ( $filename =~ m{^admin/temp/} );
	next if ( $filename =~ m{^drhconfig/} );
	next if ( $filename =~ m{^admin/includes/config.php} );

	push @files, $filename;
}

foreach my $this_file ( sort @files )
{ 
	my $basename = $this_file;
	if ( $basename =~ s{/[^/]+$}{} && ! -e "$targetdir/$basename" ) {
		system("mkdir", "-p", "$targetdir/$basename") == 0
			or die("error with mkdir -p for $targetdir/$basename");
	}

	system("cp", "$sourcedir/$this_file", "$targetdir/$this_file") == 0
		or die("error with copy command with file $this_file");
}

