[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