![]() |
![]()
| ![]() |
![]()
NAMEPatchReader - Utilities to read and manipulate patches and CVS SYNOPSIS# Script that reads in a patch (in any known format), and prints # out some information about it. Other common operations are # outputting the patch in a raw unified diff format, outputting # the patch information to Template::Toolkit templates, adding # context to a patch from CVS, and narrowing the patch down to # apply only to a single file or set of files. use PatchReader::Raw; use PatchReader::PatchInfoGrabber; my $filename = 'filename.patch'; # Create the reader that parses the patch and the object that # extracts info from the reader's datastream my $reader = new PatchReader::Raw(); my $patch_info_grabber = new PatchReader::PatchInfoGrabber(); $reader->sends_data_to($patch_info_grabber); # Iterate over the file $reader->iterate_file($filename); # Print the output my $patch_info = $patch_info_grabber->patch_info(); print "Summary of Changed Files:\n"; while (my ($file, $info) = each %{$patch_info->{files}}) { print "$file: +$info->{plus_lines} -$info->{minus_lines}\n"; } ABSTRACTThis perl library allows you to manipulate patches programmatically by chaining together a variety of objects that read, manipulate, and output patch information:
Additionally, it is designed so that you can plug in your own objects that read the parsed data while it is being parsed (no need for the performance or memory problems that can come from reading in the entire patch all at once). You can do this by mimicking one of the existing readers (such as PatchInfoGrabber) and overriding the methods start_patch, start_file, section, end_file and end_patch.
|