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 )