#!perl BEGIN { pop @INC if $INC[-1] eq '.' } use strict; use warnings; use lib (); use Perl::PrereqScanner::NotQuiteLite::App; use Getopt::Long; use Pod::Usage; GetOptions(\my %opts, qw/ inc|lib|I=s@ libs|scan_also|scan-also|also=s@ parsers|parser=s@ version help json cpanfile save_cpanfile|save-cpanfile exclude_core|exclude-core perl_version|perl-version=s allow_test_pms|allow-test-pms features|feature=s@ base_dir|base-dir=s ignore_re|ignore-re=s ignore=s@ private_re|private-re=s private=s@ recommends suggests develop blib use_index|use-index=s perl_minimum_version verbose /); if ($opts{version}) { print "scan-perl-prereqs-nqlite v" . (Perl::PrereqScanner::NotQuiteLite->VERSION || 'DEV') . "\n"; exit; } if ($opts{help}) { pod2usage(-verbose => 1); exit; } lib->import(@{$opts{inc}}) if $opts{inc}; for my $key (keys %opts) { next unless $key =~ /\-/; (my $replaced_key = $key) =~ s/\-/_/g; $opts{$replaced_key} = $opts{$key}; } $opts{print} = 1; Perl::PrereqScanner::NotQuiteLite::App->new(%opts)->run(@ARGV); __END__ =encoding utf-8 =head1 NAME scan-perl-prereqs-nqlite =head1 SYNOPSIS scan-perl-prereqs-nqlite [DIRS|FILES] =head1 DESCRIPTION C traverses several files and subdirectories in the current directory with L to collect all C<.pl>, C<.PL>, C<.pm>, C<.t>, C<.psgi> files (as well as all the files in C and C directories), and prints a single combined list of prerequisites, which should be suitable for piping to C or similar tools. You can also pass files and/or directories to limit files to scan. In this case, however, C may fail to exclude modules that should belong to the same distribution. =head1 OPTIONS =over 4 =item version Show the version. =item help Show this help. =item json Print prerequisites as a JSON if L is installed. =item cpanfile, save_cpanfile Print prerequisites as C if L is installed. If C is set, create or update C. =item suggests Print suggestions (Cd modules in C) as well. =item develop Print requirements/suggestions for developers (Cd modules in C and C directories) as well. =item perl_minimum_version May modify required perl version if new language features are used without declaring the required perl version explicitly. =item exclude_core Ignore prerequisites that are bundled with Perl (of 5.008001 by default). This requires L version 2.99 or above. =item perl_version Ignore prerequisites that are bundled with Perl of a specific version. This implies C as well. =item allow_test_pms Print requirements/suggestions in .pm files that are placed under t/ directory but are not directly used from .t files, too. If Test::Class family is used under t/, this option is implicitly set. =item base_dir Set the base directory from where C starts traversing files and directories. =item ignore Set a list of paths C should ignore. This is useful when your distribution has a set of OS-specific modules, for example. =item ignore_re You can also specify a regexp instead of a list of paths. If this is set, C options are ignored. =item private Set a list of modules C should consider private, that is, that are not uploaded to the CPAN. Contrary to the C option, which makes the scanner skip scanning the file, this option lets the scanner scan files, and excludes matched prerequisites afterwards. =item private_re You can also specify a regexp instead of a list of modules. If this is set, C options are ignored. =item scan_also Set a list of extra paths C should also scan. This is useful when your application/distribution uses an untraditional file layout. =item feature scan-perl-prereqs-nqlite \ --feature name:description:lib/My/Plugin/For/SpecificOS \ --feature name:description:web/lib,web/bin Specify a feature name, a description, and matching paths. =item use_index You can specify an index name of CPAN::Common::Index module (such as "Mirror" or "MetaDB") not to list all the modules of a required distribution. =item blib If this is set, C will traverse subdirectories under C to collect runtime requirements. It may return better results if some of the files are located in some uncommon places and/or some of them are listed in C. However, files in C may be older than the ones under C etc, and you need to update them by running a make or a C script before you run C. =item parser Set a list of parsers (or parser tags) C uses. If this option is not set, the scanner uses C<:installed> parsers by default. =item inc Add a list of additional @INC path C looks for private parsers. =item verbose Print verbose messages. =back =head1 AUTHOR Kenichi Ishigaki, Eishigaki@cpan.orgE =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2015 by Kenichi Ishigaki. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut