NAME
Module::CPANfile - Parse cpanfile
SYNOPSIS
use Module::CPANfile;my $file = Module::CPANfile->load("cpanfile");my $prereqs = $file->prereqs; # CPAN::Meta::Prereqs objectmy @features = $file->features; # CPAN::Meta::Feature objectsmy $merged_prereqs = $file->prereqs_with(@identifiers); # CPAN::Meta::Prereqs$file->merge_meta('MYMETA.json');
DESCRIPTION
Module::CPANfile is a tool to handle cpanfile format to load application specific dependencies, not just for CPAN distributions.
METHODS
- load
-
$file = Module::CPANfile->load;$file = Module::CPANfile->load('cpanfile');Load and parse a cpanfile. By default it tries to load
"cpanfile"in the current directory, unless you pass the path to its argument.
- from_prereqs
-
$file = Module::CPANfile->from_prereqs({runtime => { requires => { DBI => '1.000' } },});Creates a new Module::CPANfile object from prereqs hash you can get via CPAN::Meta's
"prereqs", or CPAN::Meta::Prereqs'"as_string_hash".# read MYMETA, then feed the prereqs to create Module::CPANfilemy $meta = CPAN::Meta->load_file('MYMETA.json');my $file = Module::CPANfile->from_prereqs($meta->prereqs);# load cpanfile, then recreate it with round-tripmy $file = Module::CPANfile->load('cpanfile');$file = Module::CPANfile->from_prereqs($file->prereq_specs);# or $file->prereqs->as_string_hash
- prereqs
-
Returns CPAN::Meta::Prereqs object out of the parsed cpanfile.
- prereq_specs
-
Returns a hash reference that should be passed to
"CPAN::Meta::Prereqs->new".
- features
-
Returns a list of features available in the cpanfile as CPAN::Meta::Feature.
- prereqs_with(@identifiers), effective_prereqs(\@identifiers)
-
Returns CPAN::Meta::Prereqs object, with merged prereqs for features identified with the
@identifiers.
- to_string($include_empty)
-
$file->to_string;$file->to_string(1);Returns a canonical string (code) representation for cpanfile. Useful if you want to convert CPAN::Meta::Prereqs to a new cpanfile.
# read MYMETA's prereqs and print cpanfile representation of itmy $meta = CPAN::Meta->load_file('MYMETA.json');my $file = Module::CPANfile->from_prereqs($meta->prereqs);print $file->to_string;By default, it omits the phase where there're no modules registered. If you pass the argument of a true value, it will print them as well.
- save
-
$file->save('cpanfile');Saves the currently loaded prereqs as a new
"cpanfile"by calling"to_string". Beware this method will overwrite the existing cpanfile without any warning or backup. Taking a backup or giving warnings to users is a caller's responsibility.# Read MYMETA.json and creates a new cpanfilemy $meta = CPAN::Meta->load_file('MYMETA.json');my $file = Module::CPANfile->from_prereqs($meta->prereqs);$file->save('cpanfile');
- merge_meta
-
$file->merge_meta('META.yml');$file->merge_meta('MYMETA.json', '2.0');Merge the effective prereqs with Meta specification loaded from the given META file, using CPAN::Meta. You can specify the META spec version in the second argument, which defaults to 1.4 in case the given file is YAML, and 2 if it is JSON.
- options_for_module
-
my $options = $file->options_for_module($module);Returns the extra options specified for a given module as a hash reference. Returns
"undef"when the given module is not specified in the"cpanfile".For example,
# cpanfilerequires 'Plack', '1.000',dist => "MIYAGAWA/Plack-1.000.tar.gz";# ...my $file = Module::CPANfile->load;my $options = $file->options_for_module('Plack');# => { dist => "MIYAGAWA/Plack-1.000.tar.gz" }
AUTHOR
Tatsuhiko Miyagawa
SEE ALSO
cpanfile, CPAN::Meta, CPAN::Meta::Spec