NAME
Module::CPANfile - Parse cpanfile
SYNOPSIS
use
Module::CPANfile;
my
$file
= Module::CPANfile->load(
"cpanfile"
);
my
$prereqs
=
$file
->prereqs;
# CPAN::Meta::Prereqs object
my
@features
=
$file
->features;
# CPAN::Meta::Feature objects
my
$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::CPANfile
my
$meta
= CPAN::Meta->load_file(
'MYMETA.json'
);
my
$file
= Module::CPANfile->from_prereqs(
$meta
->prereqs);
# load cpanfile, then recreate it with round-trip
my
$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 it
my
$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 callingto_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 cpanfile
my
$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 thecpanfile
.For example,
# cpanfile
requires
'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