Parse-DebianChangelog-v1.2.0000755001750001750 011546372242 20215 5ustar00flichtenheldflichtenheld000000000000COPYING000444001750001750 4310511546372242 21351 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. Changes000444001750001750 2416611546372242 21617 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0Parse-DebianChangelog (1.2.0) unstable; urgency=low * DebianChangelog: - Improve readability of regexes by using named captures - Don't use $& or $` (Closes: #515018) - Don't use "English" just for $. - Allow '.' and '+' in distribution names. Patch by John Wright. (Closes: #565238) - Add Danish translation of bin.pot by Joe Dalton (Closes: #605820) * ChangesFilters: - Fix conversion of (Closes: #603341) - Allow to omit # before closed bug numbers (Closes: 446798 ;) - Update gnu.org URLs and add more FSF licenses to account for license releases and additions to common-licenses. * Require Perl 5.10. I'm pretty sure some of that regex stuff will not work in 5.8. -- Frank Lichtenheld Mon, 04 Apr 2011 16:43:54 +0200 Parse-DebianChangelog (1.1.1) unstable; urgency=low * Bug fixes: - handle dates equal to the epoch correctly - fix an error in the German translation - misc fixes to tests and build system -- Frank Lichtenheld Sat, 01 Sep 2007 03:24:08 +0200 Parse-DebianChangelog (1.1) unstable; urgency=low * Bug fixes and misc stuff: - Move repository from darcs to git and include Debian packaging stuff in the master branch. Neither should be visible to users. - Move build system to Module::Build - Make all output and documentation translatable, using po4a for the POD part - Add a Pod::UsageTrans module which works like Pod::Usage, but allows for translated content. - Make the old-format patterns a little less trigger-happy. -- Frank Lichtenheld Mon, 16 Jul 2007 03:40:24 +0200 Parse-DebianChangelog (1.0) unstable; urgency=low * API changes: - New range selection option 'offset' which complements the 'count' option. - new get_error() method to get the last non-parser error message. Use this when parse() returns undef and you want to know why. - parse() now also accepts a 'instring' option instead of 'infile' to directly parse strings in memory. * parsechangelog changes: - Support new 'offset' option as --offset, -o - Remove ugly eval construct to call the _str method and replace it with a slightly less ugly symbolic ref construct. - Changelog files can now also specified directly on the command line, one doesn't have to use the -l option anymore which is mainly for dpkg-parsechangelog compatibility. - Interpret filename '-' as request to parse STDIN instead. * Bug fixes and misc stuff: - Fix some more POD errors - Run ispell on the POD parts - Let changelog{,-print}.css know about {stable,testing}-security - Fix broken printing of module name in html() - Add documentation for Parse::DebianChangelog::Util -- Frank Lichtenheld Thu, 6 Oct 2005 04:03:50 +0200 Parse-DebianChangelog (0.9) unstable; urgency=low * API changes: - data() now supports the range selection options, too. - New range selection option 'count' which lets you request a given number of entries from the top or the tail. - init() now returns undef if there was a fatal error in parsing like when the specified file couldn't be read. Please call parse() separatly after init() if you don't want this. * parsechangelog changes: - Support new 'count' option as --count, -c, -n * Bug fixes: - Fix semantic error in handling of "all" option for XML and HTML format - Fix POD error in Parse::DebianChangelog which caused a headline to "disappear" in the output -- Frank Lichtenheld Tue, 4 Oct 2005 03:47:17 +0200 Parse-DebianChangelog (0.8) unstable; urgency=low * API changes: - Add new XML output format (xml() and xml_str()). Not something really thought through yet, no schema or DTD, just a simple "data dump". Suggestions for improvements welcome. - ::ChangesFilters contains a new filter cve_to_mitre that links CAN/CVE numbers to the mitre page. The filter is enabled by default. * parsechangelog changes: - Support the standard --version, -V options * Bug fixes: - Document the --file, -l options of parsechangelog - Some more small documentation fixes -- Frank Lichtenheld Sun, 2 Oct 2005 02:54:36 +0200 Parse-DebianChangelog (0.7a) unstable; urgency=low * Actually include changelog entry for 0.7, D'oh! -- Frank Lichtenheld Tue, 16 Aug 2005 02:55:31 +0200 Parse-DebianChangelog (0.7) unstable; urgency=low * Add parsechangelog script that offers the Parse::DebianChangelog functionality from the command line (with some limitations related to the HTML format currently) * API changes: - Unify range selection for output functions All output functions now take at least interpret the four options 'since', 'until', 'from', and 'to'. The code for that is capsuled in the (currently internal) method _data_range. See the documentation for the semantics of the options * Bug fixes: - Fix some typos in the POD documentation - Fix error in ::ChangesFilters that caused the script to die whenever the common_licenses filter matched - Update FSF address in GPL notices -- Frank Lichtenheld Tue, 16 Aug 2005 02:55:08 +0200 Parse-DebianChangelog (0.6) unstable; urgency=low * API changes: - Make the parsed date available as Timestamp from ::Entry - Change return value of get_parse_errors to return an array of arrays and not a reference to it in list context * Bug fixes: - The parse errors weren't available if parsing the file from init due to a re-initialisation after the parse run. -- Frank Lichtenheld Wed, 3 Aug 2005 13:26:45 +0200 Parse-DebianChangelog (0.5) unstable; urgency=low * Major code refactoring: - Make changes filters costumizable (even though this is not really documented yet). Default filters are available via Parse::DebianChangelog::ChangesFilters - Move non-oo helper stuff mostly to Parse::DebianChangelog::Util. This is not yet ready to be used independently from the main modul but could easily be soon - Entry information is now stored in Parse::DebianChangelog::Entry objects. Introduce data() method to be able to retrieve these * Minor bugfixes/enhancements: - html: make changes also available as CONTENT_CHANGES_UNFILTERED, the name should explain the purpose of the variable - html: don't bail out if the user decides not to use a defined variable in his template -- Frank Lichtenheld Tue, 12 Jul 2005 20:04:53 +0300 Parse-DebianChangelog (0.4) unstable; urgency=low * Complete API overhaul (read the the documentation) * Documentation: - basic module documentation in POD format, available as man page, too - basic README - TODO file * Use HTML::Template for HTML output * New RFC822 output format (like dpkg output format but in multiple stanzas) * Don't use dpkg's controllib.pl anymore which makes the dpkg output actually usable (STDOUT don't getting closed anymore, output available as a string and not just on STDOUT, etc.) * Minor bugfixes: - html: Always generate valid ID fields (~ and + are not allowed in ID fields) - dpkg: Avoid some "Use of uninitialized value in concatenation" warnings related to handling of urgency comments -- Frank Lichtenheld Sun, 3 Jul 2005 17:52:37 +0200 Parse-DebianChangelog (0.3a) unstable; urgency=low * Fix issue with the Changes file: - Use Parse-DebianChangelog instead of Parse::DebianChangelog as "package" name since I the latter isn't valid for the format and the former is the directory name anyway * Add test that always parses the own changelog and suceeds if there were no errors * No code changes so version number of module not updated -- Frank Lichtenheld Fri, 1 Jul 2005 22:03:57 +0200 Parse-DebianChangelog (0.3) unstable; urgency=low * First version officially released as a module (previous versions lived in the packages.debian.org CVS) * If get_parse_errors is called in scalar context, return a usefull string representation * Many more old formats added * Skip more ugly stuff like: - /* */ style comments - Emacs local variables in lisp comments (;;) * Eliminate many occourences of undefined variables * Give unknown versions unique names (important e.g. for producing anchors on html_out) -- Frank Lichtenheld Fri, 1 Jul 2005 21:12:47 +0200 Parse-DebianChangelog (0.2) unstable; urgency=low * Add dpkg_out function which produces the exact same output as dpkg-parsechangelog (as far as tested). This isn't true for error messages, though * Modules only required for html_out are now loaded only if html_out is called * Make parse errors available to callers via get_parse_errors. With the quiet option the normal output to stderr can be surpressed * Let html_out deal with nearly everything it gets from parse without spitting Perl warnings and still produce output which is meaningful to the viewer and cleary indicates that an error has occoured * Try to do some error_recovery in parse so that no entries are actually and that no changes text appears under the wrong entry * Let the parser deal with ugly stuff like: - Emacs local variables - vim at the start of the line - #-style comments - CVS keywords - changelog entrys in old formats (I've not added support to parse that, but the whole text from the first occourence will be stored verbatim at a separate place. html_out makes a separate section titled 'Old changelog format' for it and doesn't format the text at all) -- Frank Lichtenheld Fri, 17 Jun 2005 13:10:38 +0000 Parse-DebianChangelog (0.1) unstable; urgency=low * Initial Version -- Frank Lichtenheld Mon, 13 Jun 2005 21:14:32 +0000 README000444001750001750 246711546372242 21164 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0Parse-DebianChangelog version 1.0 ================================= INSTALLATION To install this module type the following: make make test make install DEPENDENCIES This module requires these other modules and libraries: For parsing: Date::Parse (from TimeDate) IO::String (only if you want to parse strings) For the HTML output: HTML::Entities (from HTML::Parser) HTML::Template For the XML output: XML::Simple For using the parsechangelog script: Locale::gettext For testing: (everything mentioned above plus:) tidy dpkg-dev Test::Pod Test::Pod::Coverage COPYRIGHT AND LICENCE Copyright (C) 2005 by Frank Lichtenheld This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA TODO000444001750001750 47111546372242 20745 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0 * Handle internal errors (i.e. non-parser-errors) in a consistent matter -> partly done in 1.0 * Move output functions to seperate modules - Parse::DebianChangelog::DpkgOut - Parse::DebianChangelog::HtmlOut - etc. * Include Debian version comparison and thereby allow "fuzzy matching" of the range options Build.PL000444001750001750 2404611546372242 21615 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0#!/usr/bin/perl # Based on Build.PL from po4a use Module::Build; use strict; use warnings; my $builder = Module::Build->subclass ( class => 'My::Builder', code => q{ { use strict; my $bin_po_dir = 'po'; my $bin_pot_file = 'bin.pot'; my $bin_po_prefix = 'bin.'; my $bin_pot_path = "$bin_po_dir/$bin_pot_file"; my $doc_po_dir = 'po'; my $doc_pot_file = 'doc.pot'; my $doc_po_prefix = 'doc.'; my $doc_pot_path = "$doc_po_dir/$doc_pot_file"; my $base_dir = '..'; my $bin_mo_file = 'Parse-DebianChangelog'; my $doc_mo_file = 'Parse-DebianChangelog-Pod'; my $po4a_path = ''; sub ACTION_build { my $self = shift; $self->depends_on('code'); $self->depends_on('docs'); $self->depends_on('distmeta'); # regenerate META.yml $self->depends_on('man'); $self->depends_on('postats'); } sub ACTION_install { my $self = shift; require ExtUtils::Install; # $self->depends_on('build'); ExtUtils::Install::install($self->install_map, 1, 0, $self->{args}{uninst}||0); } sub ACTION_binpo { my $self = shift; my @files = sort( (keys(%{$self->script_files()}), @{$self->rscan_dir('lib',qr/\.pm$/)})); unless ($self->up_to_date(\@files, $bin_pot_path)) { print "XX Update $bin_pot_path\n"; my $podfiles = join ("", map { " $base_dir/$_" } @files); system("cd $bin_po_dir; xgettext --copyright-holder=\"Frank Lichtenheld\" --keyword=__g --msgid-bugs-address=frank\@lichtenheld.de -L Perl $podfiles -o $bin_pot_file.new") && die; if ( -e $bin_pot_path) { my $diff = qx(diff -q -I'#:' -I'POT-Creation-Date:' -I'PO-Revision-Date:' $bin_pot_path $bin_pot_path.new); if ( $diff eq "" ) { unlink "$bin_pot_path.new" || die; # touch it my ($atime, $mtime) = (time,time); utime $atime, $mtime, $bin_pot_path; } else { rename "$bin_pot_path.new", $bin_pot_path || die; } } else { rename "$bin_pot_path.new", $bin_pot_path || die; } } else { print "XX $bin_pot_path uptodate.\n"; } # update languages @files = @{$self->rscan_dir($bin_po_dir,qr/\/\Q$bin_po_prefix\E.*\.po$/)}; foreach (@files) { next if m|/.#|; $_ =~ /.*\/(?:.*\.)?(.*)\.po$/; my $lang = $1; unless ($self->up_to_date($bin_pot_path, "$bin_po_dir/$bin_po_prefix$lang.po")) { print "XX Sync $bin_po_dir/$bin_po_prefix$lang.po: "; system('msgmerge', "$bin_po_dir/$bin_po_prefix$lang.po", "$bin_pot_path", "-o", "$bin_po_dir/$bin_po_prefix$lang.po.new") && die; # Typically all that changes was a date. I'd # prefer not to cvs commit such changes, so # detect and ignore them. my $diff = qx(diff -q -I'#:' -I'POT-Creation-Date:' -I'PO-Revision-Date:' $bin_po_dir/$bin_po_prefix$lang.po $bin_po_dir/$bin_po_prefix$lang.po.new); if ($diff eq "") { unlink "$bin_po_dir/$bin_po_prefix$lang.po.new" || die; # touch it my ($atime, $mtime) = (time,time); utime $atime, $mtime, "$bin_po_dir/$bin_po_prefix$lang.po"; } else { rename "$bin_po_dir/$bin_po_prefix$lang.po.new", "$bin_po_dir/$bin_po_prefix$lang.po" || die; } } else { print "XX $bin_po_dir/$bin_po_prefix$lang.po uptodate.\n"; } unless ($self->up_to_date("$bin_po_dir/$bin_po_prefix$lang.po", "blib/po/$lang/LC_MESSAGES/$bin_mo_file.mo")) { print "X Generate $bin_mo_file.mo for $lang.\n"; system('mkdir', '-p', "blib/po/$lang/LC_MESSAGES") && die; system('msgfmt', '-o', "blib/po/$lang/LC_MESSAGES/$bin_mo_file.mo", "$bin_po_dir/$bin_po_prefix$lang.po") && die; } else { print "XX $bin_mo_file.mo for $lang uptodate.\n"; } } } sub ACTION_manpo { my $self = shift; # update pot my @files = sort( (keys(%{$self->script_files()}), @{$self->rscan_dir('lib',qr/\.pm$/)})); unless ($self->up_to_date(\@files, $doc_pot_path)) { my $podfiles = join ("", map {" -m $base_dir/$_" } @files); print "XX Update documentation pot files: "; system("cd $doc_po_dir; ${po4a_path}po4a-updatepo -f pod $podfiles -M utf-8 -p $doc_pot_file") && die; my ($atime, $mtime) = (time,time); utime $atime, $mtime, $doc_pot_path; } else { print "XX Documentation pot file uptodate.\n"; } # update languages @files = @{$self->rscan_dir($doc_po_dir,qr/\.po$/)}; foreach (@files) { $_ =~ /.*\/(?:.*\.)?(.*)\.po$/; my $lang = $1; unless ($self->up_to_date($doc_pot_path, "$doc_po_dir/$doc_po_prefix$lang.po")) { print "XX Update documentation $doc_po_prefix$lang.po: "; system('msgmerge', "$doc_po_dir/$doc_po_prefix$lang.po", "$doc_pot_path", '-o', "$doc_po_dir/$doc_po_prefix$lang.po.new") && die; # Typically all that changes was a date. I'd # prefer not to cvs commit such changes, so # detect and ignore them. my $diff = qx(diff -q -I'#:' -I'POT-Creation-Date:' -I'PO-Revision-Date:' $doc_po_dir/$doc_po_prefix$lang.po $doc_po_dir/$doc_po_prefix$lang.po.new); if ( $diff eq "" ) { unlink "$doc_po_dir/$doc_po_prefix$lang.po.new" || die; my ($atime, $mtime) = (time,time); utime $atime, $mtime, "$doc_po_dir/$doc_po_prefix$lang.po"; } else { rename "$doc_po_dir/$doc_po_prefix$lang.po.new", "$doc_po_dir/$doc_po_prefix$lang.po" || die; } } else { print "XX Documentation $doc_po_prefix$lang.po uptodate.\n"; } unless ($self->up_to_date("$doc_po_dir/$doc_po_prefix$lang.po", "blib/po/$lang/LC_MESSAGES/$doc_mo_file.mo")) { print "X Generate $doc_mo_file.mo for $lang.\n"; system('mkdir', '-p', "blib/po/$lang/LC_MESSAGES") && die; system('msgfmt', '-o', "blib/po/$lang/LC_MESSAGES/$doc_mo_file.mo", "$doc_po_dir/$doc_po_prefix$lang.po") && die; } else { print "XX $doc_mo_file.mo for $lang uptodate.\n"; } } } sub ACTION_man { my $self = shift; $self->depends_on('manpo'); use Pod::Man; my $options = "-v -f pod -M utf-8 -L iso8859-1"; #get the languages my @langs = @{$self->rscan_dir($doc_po_dir,qr/\.po$/)}; my $i=0; while ($i < @langs) { $langs[$i] =~ /.*\/(?:.*\.)?(.*)\.po$/; $langs[$i] = $1; $i++; } system("rm", "-rf", "blib/man") && die; system("mkdir", "-p", "blib/man") && die; # Translate binaries manpages my $parser = Pod::Man->new (release => "parsechangelog", center => "parsechangelog", section => "1p"); foreach my $lang (@langs) { print ("X Translate binary manpages to $lang\n"); foreach my $file (keys(%{$self->script_files()})) { system("${po4a_path}po4a-translate $options -m $file -p $doc_po_dir/$doc_po_prefix$lang.po -l blib/man/$file") && die; if (-e "blib/man/$file") { system("mkdir", "-p", "blib/man/$lang/man1") && die; $parser->parse_from_file ("blib/man/$file", "blib/man/$lang/man1/$file.1p"); system("gzip", "-9f", "blib/man/$lang/man1/$file.1p") && die; system("rm", "-f", "blib/man/$file") && die; } } } # Translate modules manpages $parser = Pod::Man->new (release => "Parse::DebianChangelog", center => "Parse::DebianChangelog", section => "3pm"); foreach my $lang (@langs) { print ("X Translate module manpages to $lang\n"); foreach my $file (@{$self->rscan_dir('lib',qr/\.pm$/)}) { $file =~ /.*\/(.*)\.pm$/; my $filename = $1; system("${po4a_path}po4a-translate $options -m $file -p $doc_po_dir/$doc_po_prefix$lang.po -l blib/man/$filename") && die; if (-e "blib/man/$filename") { system ("mkdir", "-p", "blib/man/$lang/man3") && die; $parser->parse_from_file ("blib/man/$filename", "blib/man/$lang/man3/Parse::DebianChangelog::$filename.3pm") || die; system ("gzip", "-9f", "blib/man/$lang/man3/Parse::DebianChangelog::$filename.3pm") && die "Cannot gzip blib/man/$lang/man3/Parse::DebianChangelog::$filename.3pm"; system ("rm", "-f", "blib/man/$filename") && die; } } } } sub ACTION_dist { my ($self) = @_; $self->depends_on('test'); $self->depends_on('distdir'); my $dist_dir = $self->dist_dir; if ( -e "$dist_dir.tar.gz") { # Delete the distfile if it already exists system ("rm", "$dist_dir.tar.gz") && die; } $self->make_tarball($dist_dir); $self->delete_filetree($dist_dir); } sub ACTION_postats { my $self = shift; $self->depends_on('binpo'); $self->depends_on('manpo'); $self->postats($bin_po_dir); $self->postats($doc_po_dir) unless $bin_po_dir eq $doc_po_dir; } sub postats { my ($self,$dir) = (shift,shift); my $potsize = `(cd $dir;ls -sh *.pot) | sed -n -e 's/^ *\\\\([^[:blank:]]*\\\\).*\$/\\\\1/p'`; $potsize =~ /(.*)/; print "$dir (pot: $1)\n"; my @files = @{$self->rscan_dir($dir,qr/\.po$/)}; foreach (@files) { my $file = $_; $file =~ /.*\/(?:.*\.)?(.*)\.po$/; my $lang = $1; my $stat = `msgfmt -o /dev/null -c -v --statistics $file 2>&1`; print " $lang: $stat"; } } } }, ); my $base= $Config::Config{man1dir}; $base =~ s/\/man\/man1//; my $b = $builder->new ( module_name => 'Parse-DebianChangelog', license => 'gpl', dist_version_from => 'lib/Parse/DebianChangelog.pm', # finds $VERSION requires => { 'Date::Parse' => 0, 'Locale::gettext' => 0 }, recommends => { 'IO::String' => 0, 'HTML::Parser' => 0, 'HTML::Entities' => 0, 'HTML::Template' => 0, 'XML::Simple' => 0 }, build_requires => { 'Test::Pod' => 0, 'Test::Pod::Coverage' => 0 }, script_files => [ 'bin/parsechangelog' ], add_to_cleanup => [ 'messages.mo', 'blib', '$doc_pot_path~' ], install_path => {po => $base.'/locale', man => $base.'/man'}, create_packlist => 0, dist_abstract => 'parse Debian changelogs and output them in other formats', dist_author => ['Frank Lichtenheld '] )->create_build_script; MANIFEST.SKIP000444001750001750 56311546372242 22155 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0# Version control files and dirs. \bRCS\b \bCVS\b ,v$ \B\.svn\b _darcs .git .patch$ # Distribution specific debian/ .*-stamp$ # Makemaker/Module::Build generated files and dirs. ^MANIFEST\.bak$ ^blib/ ^_build/ ^Build$ ^MakeMaker-\d ^pm_to_blib$ # Temp, old and emacs backup files. ~$ \.old$ (^|/)#.*\#$ (^|/)\.# \.tmp$ \.swp$ # Distribution files \.asc$ \.gz$ \.tar$ Makefile000444001750001750 62511546372242 21716 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0verbose=0 installdirs=site all: Build @./Build Build: Build.PL perl Build.PL installdirs=$(installdirs) install: Build @./Build install destdir=$(DESTDIR) clean: Build @./Build realclean dist: Build MANIFEST @./Build dist MANIFEST: MANIFEST.SKIP Build @./Build manifest stats: Build @./Build postats test: Build @./Build test verbose=$(verbose) .PHONY: all install clean dist stats check META.yml000444001750001750 203011546372242 21537 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0--- name: Parse-DebianChangelog version: v1.2.0 author: - 'Frank Lichtenheld ' abstract: parse Debian changelogs and output them in other formats license: gpl build_requires: Test::Pod: 0 Test::Pod::Coverage: 0 requires: Date::Parse: 0 Locale::gettext: 0 recommends: HTML::Entities: 0 HTML::Parser: 0 HTML::Template: 0 IO::String: 0 XML::Simple: 0 configure_requires: Module::Build: 0.340201 generated_by: Module::Build version 0.340201 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 provides: Parse::DebianChangelog: file: lib/Parse/DebianChangelog.pm version: v1.2.0 Parse::DebianChangelog::ChangesFilters: file: lib/Parse/DebianChangelog/ChangesFilters.pm Parse::DebianChangelog::Entry: file: lib/Parse/DebianChangelog/Entry.pm Parse::DebianChangelog::Util: file: lib/Parse/DebianChangelog/Util.pm Pod::UsageTrans: file: lib/Pod/UsageTrans.pm version: 0.1 resources: license: http://opensource.org/licenses/gpl-license.php MANIFEST000444001750001750 122411546372242 21423 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0bin/parsechangelog Build.PL Changes COPYING lib/Parse/DebianChangelog.pm lib/Parse/DebianChangelog/ChangesFilters.pm lib/Parse/DebianChangelog/Entry.pm lib/Parse/DebianChangelog/Util.pm lib/Pod/UsageTrans.pm Makefile MANIFEST This list of files MANIFEST.SKIP META.yml po/bin.da.po po/bin.de.po po/bin.pot po/doc.da.po po/doc.de.po po/doc.pot README t/Documentation.t t/examples/countme t/examples/misplaced-tz t/examples/shadow t/Parse-DebianChangelog-ChangesFilters.t t/Parse-DebianChangelog.t t/parse-in-for-loop.t tmpl/changelogs-print.css tmpl/changelogs.css tmpl/content.tmpl tmpl/default.tmpl tmpl/footer.tmpl tmpl/header.tmpl tmpl/html_head.tmpl TODO po000755001750001750 011546372242 20554 5ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0bin.pot000444001750001750 1051011546372242 22222 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0/po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Frank Lichtenheld # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: frank@lichtenheld.de\n" "POT-Creation-Date: 2005-10-13 02:10+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../bin/parsechangelog:146 #, perl-format msgid "changelog format %s not supported" msgstr "" #: ../bin/parsechangelog:151 msgid "ignored option -L" msgstr "" #: ../bin/parsechangelog:159 #, perl-format msgid "output format %s not supported" msgstr "" #: ../bin/parsechangelog:168 msgid "Copyright (C) 2005 by Frank Lichtenheld\n" msgstr "" #: ../bin/parsechangelog:169 msgid "" "This is free software; see the GNU General Public Licence version 2 or later " "for copying conditions. There is NO warranty." msgstr "" #: ../bin/parsechangelog:200 msgid "too many arguments" msgstr "" #: ../bin/parsechangelog:204 #, perl-format msgid "more than one file specified (%s and %s)" msgstr "" #: ../bin/parsechangelog:216 ../bin/parsechangelog:220 #, perl-format msgid "fatal error occured while parsing %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:219 #, perl-format msgid "" "WARN: %s(l%s): %s\n" "LINE: %s\n" msgstr "" #: ../lib/Parse/DebianChangelog.pm:221 #, perl-format msgid "WARN: %s(l%s): %s\n" msgstr "" #: ../lib/Parse/DebianChangelog.pm:232 #, perl-format msgid "FATAL: %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:279 #, perl-format msgid "can't open file %s: %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:284 #, perl-format msgid "can't lock file %s: %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:291 #, perl-format msgid "can't load IO::String: %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:298 msgid "no changelog file specified" msgstr "" #: ../lib/Parse/DebianChangelog.pm:319 #, perl-format msgid "found start of entry where expected %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:343 #, perl-format msgid "bad key-value after `;': `%s'" msgstr "" #: ../lib/Parse/DebianChangelog.pm:347 #, perl-format msgid "repeated key-value %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:351 msgid "badly formatted urgency value" msgstr "" #: ../lib/Parse/DebianChangelog.pm:362 #, perl-format msgid "unknown key-value key %s - copying to XS-%s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:393 msgid "badly formatted heading line" msgstr "" #: ../lib/Parse/DebianChangelog.pm:397 #, perl-format msgid "found trailer where expected %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:401 ../lib/Parse/DebianChangelog.pm:416 msgid "badly formatted trailer line" msgstr "" #: ../lib/Parse/DebianChangelog.pm:410 #, perl-format msgid "couldn't parse date %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:425 ../lib/Parse/DebianChangelog.pm:440 #, perl-format msgid "found change data where expected %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:458 #, perl-format msgid "found blank line where expected %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:462 ../lib/Parse/DebianChangelog.pm:477 msgid "unrecognised line" msgstr "" #: ../lib/Parse/DebianChangelog.pm:486 #, perl-format msgid "found eof where expected %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:497 #, perl-format msgid "can't close file %s: %s" msgstr "" #: ../lib/Parse/DebianChangelog.pm:541 msgid "you can't combine 'count' or 'offset' with any other range option" msgstr "" #: ../lib/Parse/DebianChangelog.pm:545 msgid "you can only specify one of 'from' and 'since'" msgstr "" #: ../lib/Parse/DebianChangelog.pm:549 msgid "you can only specify one of 'to' and 'until'" msgstr "" #: ../lib/Parse/DebianChangelog.pm:553 msgid "'since' option specifies most recent version" msgstr "" #: ../lib/Parse/DebianChangelog.pm:557 msgid "'until' option specifies oldest version" msgstr "" #: ../lib/Parse/DebianChangelog/Util.pm:100 #, perl-format msgid "field %s has newline then non whitespace >%s<" msgstr "" #: ../lib/Parse/DebianChangelog/Util.pm:102 #, perl-format msgid "field %s has blank lines >%s<" msgstr "" #: ../lib/Parse/DebianChangelog/Util.pm:104 #, perl-format msgid "field %s has trailing newline >%s<" msgstr "" doc.de.po000444001750001750 11664111546372242 22456 0ustar00flichtenheldflichtenheld000000000000Parse-DebianChangelog-v1.2.0/po# Copyright (C) Frank Lichtenheld # msgid "" msgstr "" "Project-Id-Version: Parse::DebianChangelog 1.0\n" "POT-Creation-Date: 2005-10-13 0:56+0200\n" "PO-Revision-Date: 2005-10-12 20:13+0200\n" "Last-Translator: Frank Lichtenheld \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # type: =head1 #: ../bin/parsechangelog:20 ../lib/Parse/DebianChangelog.pm:22 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:21 #: ../lib/Parse/DebianChangelog/Entry.pm:21 #: ../lib/Parse/DebianChangelog/Util.pm:22 ../lib/Pod/UsageTrans.pm:30 msgid "NAME" msgstr "NAME" # type: textblock #: ../bin/parsechangelog:22 msgid "" "parsechangelog - parse Debian changelogs and output them in other formats" msgstr "" # type: =head1 #: ../bin/parsechangelog:24 ../lib/Parse/DebianChangelog.pm:26 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:25 #: ../lib/Parse/DebianChangelog/Entry.pm:25 ../lib/Pod/UsageTrans.pm:34 msgid "SYNOPSIS" msgstr "ÜBERSICHT" # type: textblock #: ../bin/parsechangelog:26 msgid "parsechangelog [options] [changelogfile]" msgstr "parsechangelog [options] [changelogfile]" # type: verbatim #: ../bin/parsechangelog:28 #, no-wrap msgid "" " Options:\n" " --help, -h print usage information\n" " --version, -V print version information\n" " --file, -l changelog file to parse, defaults\n" " to 'debian/changelog'\n" " -F ignored if changelogformat = 'debian'\n" " for compatibility with dpkg-dev\n" " -L ignored for compatibility with dpkg-dev\n" " --format see man page for list of available\n" " output formats, defaults to 'dpkg'\n" " for compatibility with dpkg-dev\n" " --since, -s, -v include all changes later than version\n" " --until, -u include all changes earlier than version\n" " --from, -f include all changes equal or later\n" " than version\n" " --to, -t include all changes up to or equal\n" " than version\n" " --count, -c, -n include entries from the top\n" " (or the tail if is lower than 0)\n" " --offset, -o change the starting point for --count,\n" " counted from the top (or the tail if\n" " is lower than 0)\n" " --all include all changes\n" "\n" msgstr "" # type: textblock #: ../bin/parsechangelog:52 msgid "" "If neither C nor C<-l EfileE> are specified, F will be used. If two different files are specified the program " "will abort." msgstr "" # type: textblock #: ../bin/parsechangelog:56 msgid "" "If the filename is C<-> the program reads the changelog from standard input." msgstr "" "Wenn der Dateiname C<-> ist, liest das Programm das Changelog von der " "Standardeingabe" # type: textblock #: ../bin/parsechangelog:59 msgid "" "C<--all> overrides all other range selecting options. C<--count> overrides " "all other range selection options except for C<--all>. The range selecting " "options can be mixed together, but only one of C<--since> and C<--from> and " "one of C<--until> and C<--to> can be specified at the same time." msgstr "" # type: textblock #: ../bin/parsechangelog:65 msgid "" "The dpkg and rfc822 formats default to showing only the first entry when no " "other options are given with while the HTML and XML formats default to " "showing all entries." msgstr "" "Die dpkg- und rfc822-Formate stellen standardmäßig nur den ersten Eintrag " "dar, wenn keine anderen Optionen angegeben wurden, während die HTML und XML-" "Formate standardmäßig all Einträge darstellen." # type: textblock #: ../bin/parsechangelog:69 msgid "" "For a more extensive documentation of the range selecting options and some " "(hopefully enlightening) examples see L." msgstr "" "Für eine ausführlichere Dokumentation der Bereichsauswahl-Optionen und " "einige (hoffentlich erhellende) Beispiele siehe L." # type: =head1 #: ../bin/parsechangelog:73 ../lib/Parse/DebianChangelog.pm:42 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:27 #: ../lib/Parse/DebianChangelog/Entry.pm:27 #: ../lib/Parse/DebianChangelog/Util.pm:26 ../lib/Pod/UsageTrans.pm:64 msgid "DESCRIPTION" msgstr "BESCHREIBUNG" # type: textblock #: ../bin/parsechangelog:75 msgid "" "parsechangelog parses Debian changelogs as described in the Debian policy " "(version 3.6.2.1 at the time of this writing) and converts them to other " "output formats. See section L<\"SEE ALSO\"> for locations where to find the " "full format definition." msgstr "" # type: textblock #: ../bin/parsechangelog:80 msgid "The output formats supported are currently:" msgstr "" # type: =item #: ../bin/parsechangelog:84 ../lib/Parse/DebianChangelog.pm:61 #: ../lib/Parse/DebianChangelog.pm:604 msgid "dpkg" msgstr "dpkg" # type: textblock #: ../bin/parsechangelog:86 msgid "" "Format as known from L. All requested entries (see L<" "\"SYNOPSIS\"> on how to select specific entries) are returned in the usual " "Debian control format, merged in one stanza, ready to be used in a F<." "changes> file." msgstr "" # type: =item #: ../bin/parsechangelog:91 ../lib/Parse/DebianChangelog.pm:68 #: ../lib/Parse/DebianChangelog.pm:717 msgid "rfc822" msgstr "rfc822" # type: textblock #: ../bin/parsechangelog:93 ../lib/Parse/DebianChangelog.pm:70 msgid "" "Similar to the C format, but the requested entries are returned as one " "stanza each, i.e. they are not merged. This is probably the format to use if " "you want a machine-usable representation of the changelog." msgstr "" # type: =item #: ../bin/parsechangelog:97 ../lib/Parse/DebianChangelog.pm:74 #: ../lib/Parse/DebianChangelog.pm:778 msgid "xml" msgstr "xml" # type: textblock #: ../bin/parsechangelog:99 ../lib/Parse/DebianChangelog.pm:76 msgid "" "Just a simple XML dump of the changelog data. Without any schema or DTD " "currently, just some made up XML. The actual format might still change. " "Comments and Improvements welcome." msgstr "" # type: =item #: ../bin/parsechangelog:103 ../lib/Parse/DebianChangelog.pm:80 #: ../lib/Parse/DebianChangelog.pm:857 msgid "html" msgstr "html" # type: textblock #: ../bin/parsechangelog:105 msgid "" "The changelog is converted to a somewhat nice looking HTML file with some " "nice features as a quick-link bar with direct links to every entry. NOTE: " "This is not configurable yet and was specifically designed to be used on " "L. This is planned to be changed until version " "1.0. The used Parse::DebianChangelog module already supports configuration, " "however, this isn't exposed by this program yet." msgstr "" # type: =head1 #: ../bin/parsechangelog:240 ../lib/Parse/DebianChangelog.pm:1228 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:165 #: ../lib/Parse/DebianChangelog/Entry.pm:149 #: ../lib/Parse/DebianChangelog/Util.pm:154 ../lib/Pod/UsageTrans.pm:88 msgid "SEE ALSO" msgstr "SIEHE AUCH" # type: textblock #: ../bin/parsechangelog:242 msgid "Parse::DebianChangelog, the underlying Perl module" msgstr "" # type: textblock #: ../bin/parsechangelog:244 ../lib/Parse/DebianChangelog.pm:1232 msgid "" "Description of the Debian changelog format in the Debian policy: L." msgstr "" # type: =head1 #: ../bin/parsechangelog:247 ../lib/Parse/DebianChangelog.pm:1235 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:169 #: ../lib/Parse/DebianChangelog/Entry.pm:153 #: ../lib/Parse/DebianChangelog/Util.pm:158 ../lib/Pod/UsageTrans.pm:92 msgid "AUTHOR" msgstr "AUTOR" # type: textblock #: ../bin/parsechangelog:249 ../lib/Parse/DebianChangelog.pm:1237 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:171 #: ../lib/Parse/DebianChangelog/Entry.pm:155 #: ../lib/Parse/DebianChangelog/Util.pm:160 ../lib/Pod/UsageTrans.pm:94 msgid "Frank Lichtenheld, Efrank@lichtenheld.deE" msgstr "Frank Lichtenheld, Efrank@lichtenheld.deE" # type: =head1 #: ../bin/parsechangelog:251 ../lib/Parse/DebianChangelog.pm:1239 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:173 #: ../lib/Parse/DebianChangelog/Entry.pm:157 #: ../lib/Parse/DebianChangelog/Util.pm:162 msgid "COPYRIGHT AND LICENSE" msgstr "COPYRIGHT UND LIZENZ" # type: textblock #: ../bin/parsechangelog:253 ../lib/Parse/DebianChangelog.pm:1241 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:175 #: ../lib/Parse/DebianChangelog/Entry.pm:159 #: ../lib/Parse/DebianChangelog/Util.pm:164 msgid "Copyright (C) 2005 by Frank Lichtenheld" msgstr "Copyright (C) 2005 Frank Lichtenheld" # type: textblock #: ../bin/parsechangelog:255 ../lib/Parse/DebianChangelog.pm:1243 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:177 #: ../lib/Parse/DebianChangelog/Entry.pm:161 #: ../lib/Parse/DebianChangelog/Util.pm:166 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version." msgstr "" "Dieses Programm ist freie Software. Sie können es unter den Bedingungen der " "GNU General Public License, wie von der Free Software Foundation " "veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 " "der Lizenz oder (nach Ihrer Option) jeder späteren Version." # type: textblock #: ../bin/parsechangelog:260 ../lib/Parse/DebianChangelog.pm:1248 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:182 #: ../lib/Parse/DebianChangelog/Entry.pm:166 #: ../lib/Parse/DebianChangelog/Util.pm:171 msgid "" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" "Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen " "von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die " "implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN " "BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License." # type: textblock #: ../bin/parsechangelog:265 ../lib/Parse/DebianChangelog.pm:1253 #: ../lib/Parse/DebianChangelog/ChangesFilters.pm:187 #: ../lib/Parse/DebianChangelog/Entry.pm:171 #: ../lib/Parse/DebianChangelog/Util.pm:176 msgid "" "You should have received a copy of the GNU General Public License along with " "this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin St, Fifth Floor, Boston, MA 02110-1301 USA" msgstr "" "Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem " "Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA." # type: textblock #: ../lib/Parse/DebianChangelog.pm:24 msgid "" "Parse::DebianChangelog - parse Debian changelogs and output them in other " "formats" msgstr "" # type: verbatim #: ../lib/Parse/DebianChangelog.pm:28 #, no-wrap msgid "" " use Parse::DebianChangelog;\n" "\n" msgstr "" # type: verbatim #: ../lib/Parse/DebianChangelog.pm:30 #, no-wrap msgid "" " my $chglog = Parse::DebianChangelog->init( { infile => 'debian/changelog',\n" " HTML => { outfile => 'changelog.html' } );\n" " $chglog->html;\n" "\n" msgstr "" # type: verbatim #: ../lib/Parse/DebianChangelog.pm:34 #, no-wrap msgid "" " # the following is semantically equivalent\n" " my $chglog = Parse::DebianChangelog->init();\n" " $chglog->parse( { infile => 'debian/changelog' } );\n" " $chglog->html( { outfile => 'changelog.html' } );\n" "\n" msgstr "" # type: verbatim #: ../lib/Parse/DebianChangelog.pm:39 #, no-wrap msgid "" " my $changes = $chglog->dpkg_str( { since => '1.0-1' } );\n" " print $changes;\n" "\n" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:44 msgid "" "Parse::DebianChangelog parses Debian changelogs as described in the Debian " "policy (version 3.6.2.1 at the time of this writing). See section L<\"SEE " "ALSO\"> for locations where to find this definition." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:48 msgid "" "The parser tries to ignore most cruft like # or /* */ style comments, CVS " "comments, vim variables, emacs local variables and stuff from older " "changelogs with other formats at the end of the file. NOTE: most of these " "are ignored silently currently, there is no parser error issued for them. " "This should become configurable in the future." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:55 msgid "" "Beside giving access to the details of the parsed file via the L<\"data\"> " "method, Parse::DebianChangelog also supports converting these changelogs to " "various other formats. These are currently:" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:63 msgid "" "Format as known from L. All requested entries (see L<" "\"METHODS\"> for an explanation what this means) are returned in the usual " "Debian control format, merged in one stanza, ready to be used in a F<." "changes> file." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:82 msgid "" "The changelog is converted to a somewhat nice looking HTML file with some " "nice features as a quick-link bar with direct links to every entry. NOTE: " "This is not very configurable yet and was specifically designed to be used " "on L. This is planned to be changed until " "version 1.0." msgstr "" # type: =head2 #: ../lib/Parse/DebianChangelog.pm:90 msgid "METHODS" msgstr "METHODEN" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:109 #: ../lib/Parse/DebianChangelog/Entry.pm:31 msgid "init" msgstr "init" # type: textblock #: ../lib/Parse/DebianChangelog.pm:111 msgid "" "Creates a new object instance. Takes a reference to a hash as optional " "argument, which is interpreted as configuration options. There are " "currently no supported general configuration options, but see the other " "methods for more specific configuration options which can also specified to " "C." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:117 msgid "" "If C or C are specified (see L), C is " "called from C. If a fatal error is encountered during parsing (e.g. " "the file can't be opened), C will not return a valid object but " "C!" msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:145 msgid "reset_parse_errors" msgstr "reset_parse_errors" # type: textblock #: ../lib/Parse/DebianChangelog.pm:147 msgid "" "Can be used to delete all information about errors ocurred during previous " "L runs. Note that C also calls this method." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:176 msgid "get_parse_errors" msgstr "get_parse_errors" # type: textblock #: ../lib/Parse/DebianChangelog.pm:178 msgid "" "Returns all error messages from the last L run. If called in scalar " "context returns a human readable string representation. If called in list " "context returns an array of arrays. Each of these arrays contains" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:185 msgid "1." msgstr "1." # type: textblock #: ../lib/Parse/DebianChangelog.pm:187 msgid "" "the filename of the parsed file or C if a string was parsed directly" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:190 msgid "2." msgstr "2." # type: textblock #: ../lib/Parse/DebianChangelog.pm:192 msgid "the line number where the error occurred" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:194 msgid "3." msgstr "3." # type: textblock #: ../lib/Parse/DebianChangelog.pm:196 msgid "an error description" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:198 msgid "4." msgstr "4." # type: textblock #: ../lib/Parse/DebianChangelog.pm:200 msgid "the original line" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:204 msgid "" "NOTE: This format isn't stable yet and may change in later versions of this " "module." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:236 msgid "get_error" msgstr "get_error" # type: textblock #: ../lib/Parse/DebianChangelog.pm:238 msgid "" "Get the last non-parser error (e.g. the file to parse couldn't be opened)." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:250 msgid "parse" msgstr "parse" # type: textblock #: ../lib/Parse/DebianChangelog.pm:252 msgid "" "Parses either the file named in configuration item C or the string " "saved in configuration item C. Accepts a hash ref as optional " "argument which can contain configuration items." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:257 msgid "" "Returns C in case of error (e.g. \"file not found\", B parse " "errors) and the object if successful. If C was returned, you can get " "the reason for the failure by calling the L method." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:488 msgid "data" msgstr "data" # type: textblock #: ../lib/Parse/DebianChangelog.pm:490 msgid "" "C returns an array (if called in list context) or a reference to an " "array of Parse::DebianChangelog::Entry objects which each represent one " "entry of the changelog." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:494 msgid "" "This is currently merely a placeholder to enable users to get to the raw " "data, expect changes to this API in the near future." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:497 msgid "" "This method supports the common output options described in section L<" "\"COMMON OUTPUT OPTIONS\">." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:606 msgid "(and B)" msgstr "(und B)" # type: textblock #: ../lib/Parse/DebianChangelog.pm:608 msgid "" "C returns a hash (in list context) or a hash reference (in scalar " "context) where the keys are field names and the values are field values. The " "following fields are given:" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:614 #: ../lib/Parse/DebianChangelog/Entry.pm:54 msgid "Source" msgstr "Source" # type: textblock #: ../lib/Parse/DebianChangelog.pm:616 msgid "package name (in the first entry)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:618 #: ../lib/Parse/DebianChangelog/Entry.pm:58 msgid "Version" msgstr "Version" # type: textblock #: ../lib/Parse/DebianChangelog.pm:620 msgid "packages' version (from first entry)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:622 #: ../lib/Parse/DebianChangelog/Entry.pm:62 msgid "Distribution" msgstr "Distribution" # type: textblock #: ../lib/Parse/DebianChangelog.pm:624 msgid "target distribution (from first entry)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:626 #: ../lib/Parse/DebianChangelog/Entry.pm:66 msgid "Urgency" msgstr "Urgency" # type: textblock #: ../lib/Parse/DebianChangelog.pm:628 msgid "urgency (highest of all printed entries)" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:630 msgid "Maintainer" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:632 msgid "person that created the (first) entry" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:634 #: ../lib/Parse/DebianChangelog/Entry.pm:94 msgid "Date" msgstr "Date" # type: textblock #: ../lib/Parse/DebianChangelog.pm:636 msgid "date of the (first) entry" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:638 msgid "Closes" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:640 msgid "bugs closed by the entry/entries, sorted by bug number" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:642 msgid "Changes" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:644 msgid "content of the the entry/entries" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:648 msgid "" "C returns a stringified version of this hash which should look " "exactly like the output of L. The fields are ordered " "like in the list above." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:652 ../lib/Parse/DebianChangelog.pm:731 msgid "" "Both methods only support the common output options described in section L<" "\"COMMON OUTPUT OPTIONS\">." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:655 msgid "dpkg_str" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:657 msgid "See L." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:719 msgid "(and B)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:721 msgid "" "C returns an array of hashes (in list context) or a reference to " "this array (in scalar context) where each hash represents one entry in the " "changelog. For the format of such a hash see the description of the L<\"dpkg" "\"> method (while ignoring the remarks about which values are taken from the " "first entry)." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:727 msgid "" "C returns a stringified version of this hash which looks similar " "to the output of dpkg-parsechangelog but instead of one stanza the output " "contains one stanza for each entry." msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:734 msgid "rfc822_str" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:736 msgid "See L." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:780 msgid "(and B)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:782 msgid "" "C converts the changelog to some free-form (i.e. there is neither a DTD " "or a schema for it) XML." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:785 msgid "The method C is an alias for C." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:787 ../lib/Parse/DebianChangelog.pm:870 msgid "" "Both methods support the common output options described in section L<" "\"COMMON OUTPUT OPTIONS\"> and additionally the following configuration " "options (as usual to give in a hash reference as parameter to the method " "call):" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:794 ../lib/Parse/DebianChangelog.pm:877 msgid "outfile" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:796 ../lib/Parse/DebianChangelog.pm:879 msgid "directly write the output to the file specified" msgstr "" # type: =head3 #: ../lib/Parse/DebianChangelog.pm:800 msgid "xml_str" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:802 msgid "See L." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:859 msgid "(and B)" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:861 msgid "" "C converts the changelog to a HTML file with some nice features such " "as a quick-link bar with direct links to every entry. The HTML is generated " "with the help of HTML::Template. If you want to change the output you should " "use the default template provided with this module as a base and read the " "documentation of HTML::Template to understand how to edit it." msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:868 msgid "The method C is an alias for C." msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:881 msgid "template" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:883 msgid "" "template file to use, defaults to tmpl/default.tmpl, so you most likely want " "to override that. NOTE: The plan is to provide a configuration file for the " "module later to be able to use sane defaults here." msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:888 msgid "style" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:890 msgid "" "path to the CSS stylesheet to use (a default might be specified in the " "template and will be honoured, see the default template for an example)" msgstr "" # type: =item #: ../lib/Parse/DebianChangelog.pm:894 msgid "print_style" msgstr "" # type: textblock #: ../lib/Parse/DebianChangelog.pm:896 msgid "" "path to the CSS stylesheet to use for printing (see the notes for C