[perl-Perl-Critic-More] Add Miscellanea::RequireRcsKeywords droped from Perl::Critic

Petr Pisar ppisar at fedoraproject.org
Fri Jul 13 08:49:33 UTC 2012


commit d442ac3025dab662b1d78d52f003de75e97ef9c4
Author: Petr Písař <ppisar at redhat.com>
Date:   Fri Jul 13 10:47:39 2012 +0200

    Add Miscellanea::RequireRcsKeywords droped from Perl::Critic

 ...ore-1.000-Miscellanea::RequireRcsKeywords.patch |  236 ++++++++++++++++++++
 perl-Perl-Critic-More.spec                         |   18 +-
 2 files changed, 248 insertions(+), 6 deletions(-)
---
diff --git a/Perl-Critic-More-1.000-Miscellanea::RequireRcsKeywords.patch b/Perl-Critic-More-1.000-Miscellanea::RequireRcsKeywords.patch
new file mode 100644
index 0000000..d266026
--- /dev/null
+++ b/Perl-Critic-More-1.000-Miscellanea::RequireRcsKeywords.patch
@@ -0,0 +1,236 @@
+--- Changes
++++ Changes
+@@ -14,6 +14,8 @@
+      Policy moved:
+      * ValuesAndExpressions::ProhibitMagicNumbers has been moved into the
+        core Perl::Critic distribution.
++     * Miscellanea::RequireRcsKeywords has been moved here from the core
++       Perl::Critic distribution (RT #69546).
+ 
+      Dependencies:
+      * Now requires Perl::Critic 1.082.
+--- lib/Perl/Critic/Policy/Miscellanea/RequireRcsKeywords.pm
++++ lib/Perl/Critic/Policy/Miscellanea/RequireRcsKeywords.pm
+@@ -0,0 +1,202 @@
++##############################################################################
++#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/distributions/Perl-Critic/lib/Perl/Critic/Policy/Miscellanea/RequireRcsKeywords.pm $
++#     $Date: 2011-12-21 14:40:10 -0800 (Wed, 21 Dec 2011) $
++#   $Author: thaljef $
++# $Revision: 4106 $
++##############################################################################
++
++package Perl::Critic::Policy::Miscellanea::RequireRcsKeywords;
++
++use 5.006001;
++use strict;
++use warnings;
++use Readonly;
++
++use List::MoreUtils qw(none);
++
++use Perl::Critic::Utils qw{
++    :booleans :characters :severities :data_conversion
++};
++
++use base 'Perl::Critic::Policy';
++
++our $VERSION = '1.000';
++
++#-----------------------------------------------------------------------------
++
++Readonly::Scalar my $EXPL => [ 441 ];
++
++#-----------------------------------------------------------------------------
++
++sub supported_parameters {
++    return (
++        {
++            name            => 'keywords',
++            description     => 'The keywords to require in all files.',
++            default_string  => $EMPTY,
++            behavior        => 'string list',
++        },
++    );
++}
++
++sub default_severity  { return $SEVERITY_LOW              }
++sub default_themes    { return qw(core more pbp cosmetic) }
++sub applies_to        { return 'PPI::Document'            }
++
++#-----------------------------------------------------------------------------
++
++sub initialize_if_enabled {
++    my ($self, $config) = @_;
++
++    # Any of these lists
++    $self->{_keyword_sets} = [
++
++        # Minimal svk/svn
++        [qw(Id)],
++
++        # Expansive svk/svn
++        [qw(Revision HeadURL Date)],
++
++        # cvs?
++        [qw(Revision Source Date)],
++    ];
++
++    # Set configuration, if defined.
++    my @keywords = keys %{ $self->{_keywords} };
++    if ( @keywords ) {
++        $self->{_keyword_sets} = [ [ @keywords ] ];
++    }
++
++    return $TRUE;
++}
++
++#-----------------------------------------------------------------------------
++
++sub violates {
++    my ( $self, $elem, $doc ) = @_;
++    my @viols = ();
++
++    my $nodes = $self->_find_wanted_nodes($doc);
++    for my $keywordset_ref ( @{ $self->{_keyword_sets} } ) {
++        if ( not $nodes ) {
++            my $desc = 'RCS keywords '
++                . join( ', ', map {"\$$_\$"} @{$keywordset_ref} )
++                . ' not found';
++            push @viols, $self->violation( $desc, $EXPL, $doc );
++        }
++        else {
++            my @missing_keywords =
++                grep
++                    {
++                        my $keyword_rx = qr< \$ $_ .* \$ >xms;
++                        ! ! none { m/$keyword_rx/xms } @{$nodes}
++                    }
++                    @{$keywordset_ref};
++
++            if (@missing_keywords) {
++                # Provisionally flag a violation. See below.
++                my $desc =
++                    'RCS keywords '
++                        . join( ', ', map {"\$$_\$"} @missing_keywords )
++                        . ' not found';
++                push @viols, $self->violation( $desc, $EXPL, $doc );
++            }
++            else {
++                # Hey! I'm ignoring @viols for other keyword sets
++                # because this one is complete.
++                return;
++            }
++        }
++    }
++
++    return @viols;
++}
++
++#-----------------------------------------------------------------------------
++
++sub _find_wanted_nodes {
++    my ( $self, $doc ) = @_;
++    my @wanted_types = qw(Pod Comment Quote::Single Quote::Literal End);
++    my @found =  map { @{ $doc->find("PPI::Token::$_") || [] } } @wanted_types;
++    push @found, grep { $_->content() =~ m/ \A qw\$ [^\$]* \$ \z /smx } @{
++        $doc->find('PPI::Token::QuoteLike::Words') || [] };
++    return @found ? \@found : $EMPTY;  # Behave like PPI::Node::find()
++}
++
++1;
++
++__END__
++
++#-----------------------------------------------------------------------------
++
++=pod
++
++=for stopwords RCS
++
++=head1 NAME
++
++Perl::Critic::Policy::Miscellanea::RequireRcsKeywords - Put source-control keywords in every file.
++
++
++=head1 AFFILIATION
++
++This Policy is part of the core L<Perl::Critic|Perl::Critic>
++distribution.
++
++
++=head1 DESCRIPTION
++
++Every code file, no matter how small, should be kept in a
++source-control repository.  Adding the magical RCS keywords to your
++file helps the reader know where the file comes from, in case he or
++she needs to modify it.  This Policy scans your file for comments that
++look like this:
++
++    # $Revision: 4106 $
++    # $Source: /myproject/lib/foo.pm $
++
++A common practice is to use the C<Revision> keyword to automatically
++define the C<$VERSION> variable like this:
++
++    our ($VERSION) = '$Revision: 4106 $' =~ m{ \$Revision: \s+ (\S+) }x;
++
++
++=head1 CONFIGURATION
++
++By default, this policy only requires the C<Revision>, C<Source>, and
++C<Date> keywords.  To specify alternate keywords, specify a value for
++C<keywords> of a whitespace delimited series of keywords (without the
++dollar-signs).  This would look something like the following in a
++F<.perlcriticrc> file:
++
++    [Miscellanea::RequireRcsKeywords]
++    keywords = Revision Source Date Author Id
++
++See the documentation on RCS for a list of supported keywords.  Many
++source control systems are descended from RCS, so the keywords
++supported by CVS and Subversion are probably the same.
++
++
++=head1 AUTHOR
++
++Jeffrey Ryan Thalhammer <jeff at imaginative-software.com>
++
++
++=head1 COPYRIGHT
++
++Copyright (c) 2005-2011 Imaginative Software Systems.  All rights reserved.
++
++This program is free software; you can redistribute it and/or modify
++it under the same terms as Perl itself.  The full text of this license
++can be found in the LICENSE file included with this module.
++
++=cut
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 78
++#   indent-tabs-mode: nil
++#   c-indentation-style: bsd
++# End:
++# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
+--- MANIFEST
++++ MANIFEST
+@@ -4,6 +4,7 @@ lib/Perl/Critic/More.pm
+ lib/Perl/Critic/Policy/CodeLayout/RequireASCII.pm
+ lib/Perl/Critic/Policy/Editor/RequireEmacsFileVariables.pm
+ lib/Perl/Critic/Policy/ErrorHandling/RequireUseOfExceptions.pm
++lib/Perl/Critic/Policy/Miscellanea/RequireRcsKeywords.pm
+ lib/Perl/Critic/Policy/Modules/PerlMinimumVersion.pm
+ lib/Perl/Critic/Policy/Modules/RequirePerlVersion.pm
+ lib/Perl/Critic/Policy/ValuesAndExpressions/RestrictLongStrings.pm
+--- t/99_pod_coverage.t
++++ t/99_pod_coverage.t
+@@ -49,6 +49,7 @@ sub get_trusted_methods {
+         applies_to
+         default_themes
+         default_severity
++        initialize_if_enabled
+         supported_parameters
+     );
+ }
diff --git a/perl-Perl-Critic-More.spec b/perl-Perl-Critic-More.spec
index 50caf9c..f4716aa 100644
--- a/perl-Perl-Critic-More.spec
+++ b/perl-Perl-Critic-More.spec
@@ -1,17 +1,22 @@
 Name:           perl-Perl-Critic-More
 Version:        1.000
-Release:        5%{?dist}
+Release:        6%{?dist}
 Summary:        Supplemental policies for Perl::Critic
 License:        GPL+ or Artistic
 Group:          Development/Libraries
 URL:            http://search.cpan.org/dist/Perl-Critic-More/
 Source0:        http://www.cpan.org/authors/id/E/EL/ELLIOTJS/Perl-Critic-More-%{version}.tar.gz
+# Add Miscellanea::RequireRcsKeywords removed from Perl::Critic as intended
+# by slow upstream, bug #839815, CPAN RT#69546
+Patch0:         Perl-Critic-More-1.000-Miscellanea::RequireRcsKeywords.patch
 BuildArch:      noarch
 BuildRequires:  perl(Module::Build)
 BuildRequires:  perl(Perl::Critic) >= 1.082
 BuildRequires:  perl(Perl::MinimumVersion) >= 0.14
 BuildRequires:  perl(Readonly) >= 1.03
 # Tests:
+BuildRequires:  perl(base)
+BuildRequires:  perl(Carp)
 BuildRequires:  perl(List::MoreUtils)
 BuildRequires:  perl(Perl::Critic::Config)
 BuildRequires:  perl(Perl::Critic::Policy)
@@ -26,11 +31,7 @@ Requires:       perl(Perl::Critic) >= 1.082
 Requires:       perl(Perl::MinimumVersion) >= 0.14
 Requires:       perl(Readonly) >= 1.03
 
-# Remove underspecified dependencies for RPM 4.8
-%filter_from_requires /^perl(Readonly)\s*$/d
-%filter_setup
-# filter for RPM 4.9
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(Readonly\\)\\s*$
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Readonly\\)$
 
 %description
 This is a collection of Perl::Critic policies that are not included in the
@@ -38,6 +39,7 @@ Perl::Critic core for a variety of reasons.
 
 %prep
 %setup -q -n Perl-Critic-More-%{version}
+%patch0 -p0
 
 %build
 %{__perl} Build.PL installdirs=vendor
@@ -58,6 +60,10 @@ find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
 %{_mandir}/man3/*
 
 %changelog
+* Fri Jul 13 2012 Petr Pisar <ppisar at redhat.com> - 1.000-6
+- Add Miscellanea::RequireRcsKeywords droped from Perl::Critic. Credits to Paul
+  Howarth. (bug #839815)
+
 * Wed Jun 20 2012 Petr Pisar <ppisar at redhat.com> - 1.000-5
 - Perl 5.16 rebuild
 


More information about the scm-commits mailing list