The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use Module::Build;
use strict;
use warnings;

my $build = Module::Build->current;

my %symlink_scripts = ('bp_bulk_load_gff.pl' => 'bp_pg_bulk_load_gff.pl');

#my $blib_dir = File::Spec->catdir($build->blib, 'script');
# using blib prior to installation, post build, always 'works', but the
# installation process installs the symlink as the actual file, so we may as
# well have just done a copy

my $install_dir = $build->install_destination('script');
$build->log_info("Will try to install symlinks to $install_dir\n");
my $orig_dir = $build->cwd;
chdir($install_dir);

while (my ($source, $destination) = each %symlink_scripts) {
	if ($^O !~ /Win32/) {
		eval { symlink($source, $destination) };
		$build->log_warn("Cannot create symbolic link named $destination on your system for $source in $install_dir\n") if $@;
	} else {
		# Win32 perl does not implement symlink(), as it would not work on all filesystems.
		require File::Copy;
		eval { File::Copy::copy($source, $destination) };
		$build->log_warn("Cannot create copy of script named $destination on your system for $source in $install_dir\n") if $@;
	}
}

chdir($orig_dir);

exit;

__END__

=head1 NAME

symlink_script.pl - install script to create symbolic links

=head1 SYNOPSIS

  perl Build.pl
  ./Build install

=head1 DESCRIPTION

Used during "./Build install". Only works if the script installation directory
used during "perl Build.pl" matches that used for the actual installation during
"./Build install". So if you install to a special place, do

  perl Build.pl --install_base /home/me
  ./Build install

not

  perl Build.pl
  ./Build install --install_base /home/me

This script will create a symlink to a script in that same directory. It was
written to create a symlink with the name 'bp_pg_bulk_load_gff.pl' that targeted
'bp_bulk_load_gff.pl' but can be extended by adding files to the
%symlink_scripts hash.

Perl function 'symlink' is used to keep the script from crashing on systems
that don't allow symbolic linking.

=head1 SEE ALSO

=cut

=head1 FEEDBACK

=head2 Mailing Lists

User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to
the Bioperl mailing list.  Your participation is much appreciated.

  bioperl-l@bioperl.org                  - General discussion
  http://bioperl.org/wiki/Mailing_lists  - About the mailing lists

=head2 Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track
of the bugs and their resolution. Bug reports can be submitted via the
web:

  https://github.com/bioperl/bioperl-live/issues

=head1 AUTHOR - Sendu Bala

Email bix@sendu.me.uk

=cut