summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README103
1 files changed, 103 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..e484367
--- /dev/null
+++ b/README
@@ -0,0 +1,103 @@
+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 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 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.
+
+AUTHOR
+ Tatsuhiko Miyagawa
+
+SEE ALSO
+ cpanfile, CPAN::Meta, CPAN::Meta::Spec
+