1CPAN::Changes(3) User Contributed Perl Documentation CPAN::Changes(3)
2
3
4
6 CPAN::Changes - Read and write Changes files
7
9 # Load from file
10 my $changes = CPAN::Changes->load( 'Changes' );
11
12 # Create a new Changes file
13 $changes = CPAN::Changes->new(
14 preamble => 'Revision history for perl module Foo::Bar'
15 );
16
17 $changes->add_release( {
18 version => '0.01',
19 date => '2009-07-06',
20 } );
21
22 $changes->serialize;
23
25 It is standard practice to include a Changes file in your distribution.
26 The purpose the Changes file is to help a user figure out what has
27 changed since the last release.
28
29 People have devised many ways to write the Changes file. A preliminary
30 specification has been created (CPAN::Changes::Spec) to encourage
31 module authors to write clear and concise Changes.
32
33 This module will help users programmatically read and write Changes
34 files that conform to the specification.
35
37 new( %args )
38 Creates a new object using %args as the initial data.
39
40 "next_token"
41 Used to passes a regular expression for a "next version"
42 placeholder token. See "DEALING WITH "NEXT VERSION" PLACEHOLDERS"
43 for an example of its usage.
44
45 load( $filename, %args )
46 Parses $filename as per CPAN::Changes::Spec. If present, the optional
47 %args are passed to the underlaying call to "new()".
48
49 load_string( $string, %args )
50 Parses $string as per CPAN::Changes::Spec. If present, the optional
51 %args are passed to the underlaying call to "new()".
52
53 preamble( [ $preamble ] )
54 Gets/sets the preamble section.
55
56 releases( [ @releases ] )
57 Without any arguments, a list of current release objects is returned
58 sorted by ascending release date. When arguments are specified, all
59 existing releases are removed and replaced with the supplied
60 information. Each release may be either a regular hashref, or a
61 CPAN::Changes::Release object.
62
63 # Hashref argument
64 $changes->releases( { version => '0.01', date => '2009-07-06' } );
65
66 # Release object argument
67 my $rel = CPAN::Changes::Release->new(
68 version => '0.01', date => '2009-07-06'
69 );
70 $changes->releases( $rel );
71
72 add_release( @releases )
73 Adds the release to the changes file. If a release at the same version
74 exists, it will be overwritten with the supplied data.
75
76 delete_release( @versions )
77 Deletes all of the releases specified by the versions supplied to the
78 method.
79
80 release( $version )
81 Returns the release object for the specified version. Should there be
82 no matching release object, undef is returned.
83
84 serialize( reverse => $boolean, group_sort => \&sorting_function )
85 Returns all of the data as a string, suitable for saving as a Changes
86 file.
87
88 If reverse is provided and true, the releases are printed in the
89 reverse order (oldest to latest).
90
91 If group_sort is provided, change groups are sorted according to the
92 given function. If not, groups are sorted alphabetically.
93
94 delete_empty_groups( )
95 Deletes change groups without changes in all releases.
96
98 In the working copy of a distribution, it's not uncommon to have a
99 "next release" placeholder section as the first entry of the "Changes"
100 file.
101
102 For example, the "Changes" file of a distribution using Dist::Zilla and
103 Dist::Zilla::Plugin::NextRelease would look like:
104
105 Revision history for Foo-Bar
106
107 {{$NEXT}}
108 - Add the 'frobuscate' method.
109
110 1.0.0 2010-11-30
111 - Convert all comments to Esperanto.
112
113 0.0.1 2010-09-29
114 - Original version unleashed on an unsuspecting world
115
116 To have "CPAN::Changes" recognizes the "{{$NEXT}}" token as a valid
117 version, you can use the "next_token" argument with any of the class'
118 constructors. Note that the resulting release object will also be
119 considered the latest release, regardless of its timestamp.
120
121 To continue with our example:
122
123 # recognizes {{$NEXT}} as a version
124 my $changes = CPAN::Changes->load(
125 'Changes',
126 next_token => qr/{{\$NEXT}}/,
127 );
128
129 my @releases = $changes->releases;
130 print $releases[-1]->version; # prints '{{$NEXT}}'
131
133 • CPAN::Changes::Spec
134
135 • Test::CPAN::Changes
136
137 SIMILAR MODULES
138 • Module::Metadata::Changes
139
140 • Module::Changes
141
143 Brian Cassidy <bricas@cpan.org>
144
146 Copyright 2011-2013 by Brian Cassidy
147
148 This library is free software; you can redistribute it and/or modify it
149 under the same terms as Perl itself.
150
151
152
153perl v5.36.0 2022-07-22 CPAN::Changes(3)