Update of /cvsroot/openinteract/OpenInteract/OpenInteract
In directory usw-pr-cvs1:/tmp/cvs-serv32693
Modified Files:
Package.pm
Log Message:
added copy_modules() (and its helper, _copy_module_files()) which
copies all modules in a package (both the website and base) to a
specified directory.
Index: Package.pm
===================================================================
RCS file: /cvsroot/openinteract/OpenInteract/OpenInteract/Package.pm,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** Package.pm 2001/11/26 13:13:21 1.26
--- Package.pm 2001/11/28 05:54:21 1.27
***************
*** 798,802 ****
--- 798,847 ----
}
+ # Copy all modules from a particular package (site directory AND base
+ # directory) to another directory
+ sub copy_modules {
+ my ( $class, $info, $to_dir ) = @_;
+
+ my $site_pkg_dir = join( '/', $info->{website_dir}, $info->{package_dir} );
+ my $site_modules = $class->_copy_module_files( $site_pkg_dir, $to_dir );
+
+ my $base_pkg_dir = join( '/', $info->{base_dir}, $info->{package_dir} );
+ my $base_modules = $class->_copy_module_files( $base_pkg_dir, $to_dir );
+
+ return [ sort @{ $base_modules }, @{ $site_modules } ];
+ }
+
+
+ sub _copy_module_files {
+ my ( $class, $pkg_dir, $to_dir ) = @_;
+ unless ( -d $pkg_dir ) {
+ die "Package directory ($pkg_dir) does not exist -- cannot copy files.\n";
+ }
+ unless ( -d $to_dir ) {
+ die "Destination for package modules ($to_dir) does not exist -- cannot copy files.\n";
+ }
+ my $current_dir = cwd;
+ chdir( $pkg_dir );
+ $to_dir =~ s|/$||;
+ my $pkg_files = ExtUtils::Manifest::maniread;
+ my @module_files = grep /\.pm$/, keys %{ $pkg_files };
+ my ( %dir_ok );
+ foreach my $filename ( @module_files ) {
+ my $full_dest_file = join( '/', $to_dir, $filename );
+ #warn "Trying to copy file ($filename) to ($full_dest_file)\n";
+ next if ( -f $full_dest_file );
+ my $full_dest_dir = File::Basename::dirname( $full_dest_file );
+ unless ( $dir_ok{ $full_dest_dir } ) {
+ File::Path::mkpath( $full_dest_dir );
+ $dir_ok{ $full_dest_dir }++;
+ }
+ cp( $filename, $full_dest_file );
+ }
+ chdir( $current_dir );
+ return \@module_files;
+ }
+
+
sub read_data_file {
my ( $class, $filename ) = @_;
***************
*** 940,943 ****
--- 985,990 ----
# Put the base and website package directories into @INC
+ #
+ # NOTE: THIS WILL PROBABLY BE REMOVED
sub add_to_inc {
***************
*** 950,954 ****
unshift @my_inc, $app_package_dir if ( -d $app_package_dir );
}
! unshift @INC, @my_inc;
return @my_inc;
}
--- 997,1001 ----
unshift @my_inc, $app_package_dir if ( -d $app_package_dir );
}
! #unshift @INC, @my_inc;
return @my_inc;
}
|