Select Git revision
redminer.pl
pmlnk.pm 7.77 KiB
#!/usr/bin/perl
=head1 NAME
pmlnk -- Perl Module Link
=cut
use strict;
package pmlnk;
use Data::Dumper;
$Data::Dumper::Indent= 1;
__PACKAGE__->main() unless caller();
sub main
{
# print __LINE__, " caller: ", join(' ', caller()), "\n";
my @dirs= ();
my $target;
my $pkg_list;
my %par= ( op_mode => 'link' );
while (my $arg= shift (@ARGV))
{
# print __LINE__, " arg=[$arg]\n";
if ($arg eq '--') { push (@dirs, @ARGV); @ARGV= (); }
elsif ($arg =~ /^--(.+)/)
{
my ($opt, $val)= split ('=', $1, 2);
if ($opt eq 'help') { usage(); }
elsif ($opt eq 'copy') { $par{op_mode}= 'copy'; }
elsif ($opt eq 'force' || $opt eq 'overwrite') { $par{force}= 1; }
elsif ($opt eq 'link') { $par{op_mode}= 'link'; }
elsif ($opt eq 'packages') { $pkg_list= shift(@ARGV); }
elsif ($opt eq 'target') { $target= shift(@ARGV); }
else { usage(); }
}
elsif ($arg =~ /^-(.+)/)
{
foreach my $opt (split ('', $1))
{
if ($opt eq 'h') { usage(); exit (0); }
# elsif ($opt eq 'x') { $x_flag= 1; }
else { usage(); }
}
}
else
{
push (@dirs, $arg);
}
}
push (@dirs, '.') unless (@dirs);
$par{pkg_list}= read_items($pkg_list) if (defined ($pkg_list));
my $pmlnk= pmlnk->new( %par );
# print __LINE__, " dirs: ", join(' ', @dirs), "\n";
foreach my $dir (@dirs)
{
# print __LINE__, " dir=[$dir]\n";
my $pm_files= $pmlnk->find_modules($dir, 'pm');
# print __LINE__, " pm_files: ", join(' ', @$pm_files), "\n";
$pmlnk->check_module_list(@$pm_files);
}