Perl::PrereqScanner::NotQuiteLite::App
scan-perl-prereqs-nqlite [options] [DIRS|FILES]
-or-
use Perl::PrereqScanner::NotQuiteLite::App;
my $app = Perl::PrereqScanner::NotQuiteLite::App->new(
parsers => [qw/:bundled/],
suggests => 1,
perl_minimum_version => 1,
);
my $prereqs = $app->run;
Perl::PrereqScanner::NotQuiteLite::App walks down a directory and
scans appropriate files to find prerequisites. You usually don't need to
touch this module directly, but you might want to if you need finer control
(to use a custom CPAN index etc).
creates an object. Notable options are:
- parsers
- Perl::PrereqScanner::NotQuiteLite::App uses all the bundled parsers by
default, but you can change if you need your own parsers. See
Perl::PrereqScanner::NotQuiteLite for details.
- recommends,
suggests, perl_minimum_version
- Perl::PrereqScanner::NotQuiteLite::App usually returns
"use"d modules only, but you can change
this behavior by setting these options. See
Perl::PrereqScanner::NotQuiteLite for details.
- develop
- If set, Perl::PrereqScanner::NotQuiteLite::App also scans files under
"xt" and
"author" directories to find
requirements for development.
- exclude_core
- If set, Perl::PrereqScanner::NotQuiteLite::App ignores prerequisites that
are bundled with Perl (of 5.008001 by default, or of a
"use"d perl version if any). This
requires Module::CoreList version 2.99 or above.
- perl_version
- You can explicitly use this option to exclude core modules of a specific
perl version.
- allow_test_pms
- Perl::PrereqScanner::NotQuiteLite::App usually ignores
".pm" files under
"t/" directory if they are not used in
".t" files, considering they are some
kind of sample files. However, this assumption may be wrong sometimes. If
this option is set, it scans all the
".pm" files under
"t/" directory, considering some of the
test modules will use them. If Test::Class (or its equivalent) is used in
a test file, this option is implicitly set.
- base_dir
- Perl::PrereqScanner::NotQuiteLite::App usually starts traversing from the
current directory. If this option is set, it starts from there.
- scan_also
- Perl::PrereqScanner::NotQuiteLite::App usually scans
".pm" files in the base dir,
"Makefile.PL"/"Build.PL",
files under "lib",
"t",
"bin", script(s)
directories (and "xt",
"author" if asked). If your distribution
uses a different file layout, or uses extra directories to keep
submodules, you can add (a reference to) a list of paths to scan.
- ignore,
ignore_re
- Your distribution may have OS-specific modules whose prerequisites can not
be installed in other platforms. You can specify (a reference to) a list
of files that should not be scanned (with
"ignore" option), or a regular
expression that matches the files (with
"ignore_re" option).
- features
-
my $app = Perl::PrereqScanner::NotQuiteLite::App->new(
features => {
'windows' => {
description => 'Windows support',
paths => ['lib/Foo/Win32.pm'],
}
},
);
Instead of ignoring a set of files, you can use
"features" option to let their
prerequisites belong to a specific feature that will not be installed
unless asked. However, you are advised to create a separate distribution
for the specific feature.
- optional,
optional_re
- Instead of ignoring a set of files, you can also use
"optional" option to mark all the
prerequisites found in some of the files in your distribution optional
(i.e. suggests). You can specify (a reference to) a list of files (with
"optional" option), or a regular
expression that matches the files (with
"optional_re" option).
- private,
private_re
- Your distribution may use private modules that are not uploaded to the
CPAN and thus should not be included in
"cpanfile". You can specify (a reference
to) a list of those private modules (with
"private" option) or a regular
expression that matches those modules (with
"private_re" option).
- use_index,
index
- Perl::PrereqScanner::NotQuiteLite::App usually lists all the
"use"d modules as prerequisites, but
some of them may belong to the same distribution. If an instance of
CPAN::Common::Index backend is passed, it is used to dedupe those
prerequisites (as long as they are not versioned).
use CPAN::Common::Index::LocalPackage;
my $index = CPAN::Common::Index::LocalPackage->new(
{ source => "$ENV{HOME}/minicpan/modules/02packages.details.txt" }
);
my $app = Perl::PrereqScanner::NotQuiteLite::App->new(
index => $index,
);
traverses files and directories and returns a CPAN::Meta::Prereqs
object that keeps all the requirements/suggestions, without printing
anything unless you explicitly pass a
"print" option to
"new".
returns a CPAN::Common::Index backend object (if any).
Kenichi Ishigaki, <ishigaki@cpan.org>
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.