commit d442ac3025dab662b1d78d52f003de75e97ef9c4 Author: Petr Písař <ppisar@xxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxxxxx> ++ ++ ++=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@xxxxxxxxxx> - 1.000-6 +- Add Miscellanea::RequireRcsKeywords droped from Perl::Critic. Credits to Paul + Howarth. (bug #839815) + * Wed Jun 20 2012 Petr Pisar <ppisar@xxxxxxxxxx> - 1.000-5 - Perl 5.16 rebuild -- Fedora Extras Perl SIG http://www.fedoraproject.org/wiki/Extras/SIGs/Perl perl-devel mailing list perl-devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/perl-devel