Module-ScanDeps-Static
view release on metacpan or search on metacpan
lib/Module/ScanDeps/FindRequires.pm view on Meta::CPAN
my $module = $self->get_module;
if ($module) {
my $version = $self->get_module_version;
$requires->{requires}->{$module} = $version || '0';
}
else {
local $RS = undef;
my $modules = eval { return JSON->new->decode(<>); };
my $fh = $self->get_output_handle;
if ( !$modules || $EVAL_ERROR ) {
print {*STDERR} sprintf "no modules added %s\n", $EVAL_ERROR // $EMPTY;
}
else {
foreach ( keys %{$modules} ) {
$requires->{requires}->{$_} = $modules->{$_} || '0';
}
if ( $self->get_update ) {
$self->update_requires($requires);
}
else {
print {$fh} JSON->new->pretty->encode($requires);
}
}
}
return 0;
}
########################################################################
sub delete_requires {
########################################################################
my ($self) = @_;
my $module = $self->get_module;
die "use --module to set the module you want to delete from the requires list\n"
if !$module;
my $requires = $self->fetch_requires();
delete $requires->{requires}->{$module};
my $fh = $self->get_output_handle;
if ( $self->get_update ) {
$self->update_requires($requires);
}
else {
print {$fh} JSON->new->pretty->encode($requires);
}
return 0;
}
########################################################################
sub update_requires {
########################################################################
my ( $self, $requires ) = @_;
my ( $fh, $tempfile ) = tempfile('requiresXXXXX');
eval {
print {$fh} JSON->new->pretty->encode($requires);
close $fh;
my $requires_file = $self->get_requires;
if ( -e "$requires_file.bak" ) {
unlink "$requires_file.bak";
}
rename $requires_file, "$requires_file.bak";
rename $tempfile, $requires_file;
};
if ($EVAL_ERROR) {
print {*STDERR} "error updating requires file $EVAL_ERROR\n";
unlink $tempfile;
}
return;
}
########################################################################
sub main {
########################################################################
my @option_specs = qw(
core|c!
exclude|e=s@
exclude-path|E=s@
file|f=s
filter|F=s
file-list|L=s
format|t=s
help|h
max-items|m=i
min-perl-version=s
module-version=s
module|M=s
output|o=s
path|p=s
progress-bar|P!
recurse|R!
requires|r=s
include-require|i!
update|u
versions|v
);
my $cli = Module::ScanDeps::FindRequires->new(
option_specs => \@option_specs,
default_options => { path => getcwd, 'include-require' => $TRUE },
extra_options => [qw(files packages requires_map filter_list)],
commands => {
'create-cpanfile' => \&create_cpanfile,
( run in 3.402 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )