Provided by: dh-make-perl_0.80-1_all bug

NAME

       Debian::Rules - handy manipulation of debian/rules

SYNOPSIS

           my $r = Debian::Rules->new('debian/rules');

           my $r = Debian::Rules->new( { filename => 'debian/rules' } );

           $r->is_dh7tiny && print "Using the latest and greatest\n";
           $r->is_quiltified && print "quilt rules the rules\n";

           # file contents changed externally
           $r->parse;

           $r->add_quilt;
           $r->drop_quilt;

           $r->write;  # or undef($r);

DESCRIPTION

       Some times, one needs to know whether debian/rules uses the debhelper(1) 7 tiny variant,
       or whether it is integrated with quilt(1). Debian::Rules provides facilities to check
       this, as well as adding/removing quilt integration.

       Modified contents are written to file either vie the "write" method, or when the object
       reference goes out of scope (via DESTROY).

CONSTRUCTOR

       "new" is the standard Class::Accessor constructor, with the exception that if only one,
       non-reference argument is provided, it is treated as a value for the filename field.

       If a file name is given, the constructor calls "read" to read the file contents into
       memory.

       One of filename or lines is mandatory.

FIELDS

       filename
           Contains the file name of the rules file.

       lines
           Reference to an array pointing to the rules file. Initialized by "new".

METHODS

       parse
           Parses the rules file and stores its findings for later use. Called automatically by
           is_dh7tiny and is_quiltified. The result of the parsing is cached and subsequent calls
           to "is_XXX" use the cache. To force cache refresh (for example if the contents of the
           file have been changed), call "parse" again.

       is_dh7tiny
           Returns true if the contents of the rules file seem to use the so called tiny variant
           offered by debhelper 7. Tiny rules are detected by the presence of the following two
           lines:

               %:
                       dh $@

           (any options on the "dh" command line ignored).

       is_quiltified
           Returns true if the contents of the rules file indicate that quilt(1) is used. Various
           styles of "quilt" integration are detected:

           dh --with=quilt
           quilt.make with "$(QUILT_STAMPFN)" and "unpatch" targets.
       add_quilt
           Integrates quilt(1) into the rules. For debhelper 7 tiny rules (as determined by
           "is_dh7tiny") "--with=quilt" is added to every "dh" invocation. For the more
           traditional variant, quilt is integrated via quilt.make and its "$(QUILT_STAMPFN)" and
           "unpatch" targets.

       drop_quilt
           Removes quilt(1) integration. Both debhelper 7 tiny style ("dh --with=quilt") and
           traditional ("$(QUILT_STAMPFN)" and "unpatch") approaches are detected and removed.

       read [file name]
           Replaces the current rules content with the content of filename. If filename is not
           given, uses the value of the "filename" member.

       write [filename]
           Writes the in-memory contents filename. If not given, uses the value of the "filename"
           member.

           If "lines" points to an empty array, the file is removed.

COPYRIGHT & LICENSE

       Copyright (C) 2009, 2010 Damyan Ivanov <dmn@debian.org>

       This program is free software; you can redistribute it and/or modify it under the terms of
       the GNU General Public License version 2 as published by the Free Software Foundation.

       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 Street, Fifth Floor,
       Boston, MA 02110-1301 USA.