App-NDTools
view release on metacpan or search on metacpan
lib/App/NDTools/NDProc.pm view on Meta::CPAN
package App::NDTools::NDProc;
use strict;
use warnings FATAL => 'all';
use parent 'App::NDTools::NDTool';
use Getopt::Long qw(GetOptionsFromArray :config bundling);
use Log::Log4Cli;
use Module::Find qw(findsubmod);
use App::NDTools::Slurp qw(s_decode s_dump s_encode);
use Storable qw(dclone freeze thaw);
use Struct::Diff 0.94 qw(diff split_diff);
use Struct::Path 0.80 qw(path);
use Struct::Path::PerlStyle 0.90 qw(str2path);
our $VERSION = '0.32';
sub arg_opts {
my $self = shift;
Getopt::Long::Configure('pass_through');
my %arg_opts = (
$self->SUPER::arg_opts(),
'builtin-format=s' => \$self->{OPTS}->{'builtin-format'},
'builtin-rules=s' => \$self->{OPTS}->{'builtin-rules'},
'disable-module=s@' => \$self->{OPTS}->{'disable-module'},
'dump-blame=s' => \$self->{OPTS}->{'dump-blame'},
'dump-rules=s' => \$self->{OPTS}->{'dump-rules'},
'embed-blame=s' => \$self->{OPTS}->{'embed-blame'},
'embed-rules=s' => \$self->{OPTS}->{'embed-rules'},
'list-modules|l' => \$self->{OPTS}->{'list-modules'},
'module|m=s' => \$self->{OPTS}->{module},
'rules=s@' => \$self->{OPTS}->{rules},
);
delete $arg_opts{'help|h'}; # skip in first args parsing -- will be accessable for modules
delete $arg_opts{'version|V'}; # --"--
return %arg_opts;
}
sub configure {
my $self = shift;
$self->index_modules();
$self->{rules} = [];
map { push @{$self->{rules}}, @{$self->load_struct($_)} }
@{$self->{OPTS}->{rules}}
if ($self->{OPTS}->{rules});
if ($self->{OPTS}->{module} or @{$self->{rules}}) {
log_info { "Explicit rules used: builtin will be ignored" };
$self->{OPTS}->{'builtin-rules'} = undef;
}
$self->{OPTS}->{'disable-module'} =
{ map { $_ => 1 } @{$self->{OPTS}->{'disable-module'}} };
}
sub defaults {
return {
'blame' => 1, # may be redefined per-rule
'builtin-format' => 'RAW',
'modpath' => [ 'App::NDTools::NDProc::Module' ],
};
}
sub dump_blame {
my ($self, $blame) = @_;
log_debug { "Dumping blame to $self->{OPTS}->{'dump-blame'}" };
s_dump($self->{OPTS}->{'dump-blame'}, $self->{OPTS}->{ofmt},
$self->{OPTS}->{pretty}, $blame);
}
sub dump_result {
my ($self, $uri, $data) = @_;
log_debug { "Dumping result to $uri" };
s_dump($uri, $self->{OPTS}->{ofmt}, $self->{OPTS}->{pretty}, $data);
}
sub dump_rules {
( run in 0.812 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )