File: README

package info (click to toggle)
libmodule-cpanfile-perl 1.1004-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, sid
  • size: 196 kB
  • sloc: perl: 531; makefile: 2
file content (135 lines) | stat: -rw-r--r-- 4,176 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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.

    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,

        # 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

SEE ALSO

    cpanfile, CPAN::Meta, CPAN::Meta::Spec