Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Automatic ChangeLog Generation

by DStaal (Chaplain)
on Apr 17, 2009 at 18:15 UTC ( #758310=sourcecode: print w/ replies, xml ) Need Help??

Category: Miscellaneous
Author/Contact Info
Description:

I hate maintaining a separate ChangeLog on my modules. I'd rather keep it in the module's POD. But that's not the Kwalitee way to do it, and I'd rather follow standard locations.

Or better yet, get Perl to let me write where I like, and recreate the standard file as desired...

This goes in a Build.PL script: Use $class->new instead of Module::Build->new to use.

use Module::Build;

my $class = Module::Build->subclass (
code => q|
    use Module::Build::ModuleInfo;
    use Pod::Text;
    sub create_readme {
        my ($self) = @_;
        
        # Say what we are doing.
        print "Deleting ChangeLog\n";
        unlink 'ChangeLog';
        print "Creating ChangeLog\n";
        
        # Get the POD-formatted text.
        open my $outfile, '>', 'ChangeLog.pod';

# I'm a bit worried about the 'inc' here: it looks UNIX-only.
# However, M::B won't give my the path directly, and I don't feel like
+ going through contortions.
# (Besides, no one but me should ever run this.)

        push my @modules, Module::Build::ModuleInfo->new_from_module(
            'Acme::Module', collect_pod =>1
            , inc => [$self->base_dir()."/lib"]);
        push @modules, Module::Build::ModuleInfo->new_from_module(
            'Acme::Module::2', collect_pod =>1
            , inc => [$self->base_dir()."/lib"]);
        foreach my $pm_file ( @modules ) {
            print $outfile "=head1 Changes in: ". $pm_file->name() ."\
+n\n";
            print $outfile $pm_file->pod('HISTORY');
        }
        close $outfile;
        
        # Reformat to standard text, and remove temp file.
        my $text = Pod::Text->new();
        $text->parse_from_file('ChangeLog.pod', 'ChangeLog');
        unlink 'ChangeLog.pod';
    }
    |
);

Comment on Automatic ChangeLog Generation
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://758310]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2014-11-27 23:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (190 votes), past polls