[libconfig-model-dpkg-perl] 02/02: Scanner: can speicfy files to scan or ignore.
dod at debian.org
dod at debian.org
Sun Jan 31 16:48:36 UTC 2016
This is an automated email from the git hooks/post-receive script.
dod pushed a commit to branch master
in repository libconfig-model-dpkg-perl.
commit 5db2d8d474ac1d4209d41cb3adb71b78b66e403f
Author: Dominique Dumont <dod at debian.org>
Date: Sun Jan 31 17:45:13 2016 +0100
Scanner: can speicfy files to scan or ignore.
---
lib/Config/Model/Dpkg/Copyright.pm | 28 +++++++++++---
lib/Dpkg/Copyright/Scanner.pm | 78 ++++++++++++++++++++++++++++++++++++--
2 files changed, 98 insertions(+), 8 deletions(-)
diff --git a/lib/Config/Model/Dpkg/Copyright.pm b/lib/Config/Model/Dpkg/Copyright.pm
index 2fc6bff..bb6ac43 100644
--- a/lib/Config/Model/Dpkg/Copyright.pm
+++ b/lib/Config/Model/Dpkg/Copyright.pm
@@ -328,13 +328,31 @@ Note: this command is experimental.
=head1 Tweak results
-Results can be tweaked either by specyfying information for individual
-files or by tweaking the copyright entries created by grouping
-coaslescinf information.
+Results can be tweaked either by:
-The first way is described in L<Dpkg::Copyright::Scanner/"Filling the blanks">.
+=over
+
+=item *
+
+Changing the list of files to scan or ignore. (By default, licensecheck will decide
+which file to scan or not.)
+
+=item *
+
+Specifying information for individual files
+
+=item *
+
+Tweaking the copyright entries created by grouping and coaslescing
+information.
+
+=back
+
+The first 2 ways are described in
+L<Dpkg::Copyright::Scanner/"Selecting or ignoring files to scan">
+and L<Dpkg::Copyright::Scanner/"Filling the blanks">.
-The second way is described below:
+The last way is described below:
=head2 Tweak copyright entries
diff --git a/lib/Dpkg/Copyright/Scanner.pm b/lib/Dpkg/Copyright/Scanner.pm
index 7e96a6f..8432ca7 100644
--- a/lib/Dpkg/Copyright/Scanner.pm
+++ b/lib/Dpkg/Copyright/Scanner.pm
@@ -90,12 +90,35 @@ sub _warn ($msg) {
warn $msg unless $quiet;
}
+# from licensecheck.pl
+my $default_ignore_regex = qr!
+# Ignore general backup files
+~$|
+# Ignore emacs recovery files
+(?:^|/)\.#|
+# Ignore vi swap files
+(?:^|/)\..*\.swp$|
+# Ignore baz-style junk files or directories
+(?:^|/),,.*(?:$|/.*$)|
+# File-names that should be ignored (never directories)
+(?:^|/)(?:DEADJOE|\.cvsignore|\.arch-inventory|\.bzrignore|\.gitignore)$|
+# File or directory names that should be ignored
+(?:^|/)(?:CVS|RCS|\.pc|\.deps|\{arch\}|\.arch-ids|\.svn|\.hg|_darcs|\.git|
+\.shelf|_MTN|\.bzr(?:\.backup|tags)?)(?:$|/.*$)
+!x;
+
+# cleanup the regexp
+$default_ignore_regex =~ s/#.*\n//g;
+$default_ignore_regex =~ s/\n//g;
+
# option to skip UNKNOWN ?
# load a file to override some entries ?
sub scan_files ( %args ) {
$quiet = $args{quiet} // 0;
+ my $current_dir = $args{from_dir} || path('.');
+
my @lines ;
if (my $file = $ENV{COPYRIGHT_SCANNER_INPUT}) {
@lines = path($file)->lines_utf8 ; # for tests
@@ -104,16 +127,35 @@ sub scan_files ( %args ) {
@lines = $args{in}->lines_utf8; # for other tests
}
else {
- foreach my $opts ( ('--skipped', q! -c '(?i:readme|license|copying).*'!)) {
+ my @runs = (['--skipped'], [qw!-c (?i:readme|license|copying).*!]);
+
+ my $debian = $current_dir->child('debian');
+ my $scan_patterns = $debian->child("copyright-scan-patterns.yml");
+
+ if ($debian->is_dir and $scan_patterns->is_file) {
+ my $yaml = $scan_patterns->slurp_utf8;
+ # { check => { suffixes => [ js pl ], pattern => '[A-Z]*'}, ignore => { suffixes => [ jpg png ], pattern => 'foo.*'} }
+ my $scan_data = Load $yaml;
+ my @opts = ();
+ foreach my $what (qw/check ignore/) {
+ my $data = $scan_data->{$what} or next;
+ my $reg = join( '|' , (map { '\.'.$_.'$'} @{$data->{suffixes} || []}), @{ $data->{pattern} || []});
+ $reg .= '|' .$default_ignore_regex if $what eq 'ignore';
+ push @opts, '--skipped', "--$what=$reg";
+ }
+ @runs = \@opts ;
+ }
+
+ foreach my $opts ( @runs ) {
my $pipe = IO::Pipe->new();
- $pipe->reader("licensecheck --encoding utf8 --copyright -m -r $opts .");
+ my @cmd = (qw/licensecheck --encoding utf8 --copyright --machine --recursive/, @$opts, '.');
+ $pipe->reader(@cmd);
binmode($pipe, ":encoding(UTF-8)");
push @lines, $pipe->getlines;
$pipe->close;
}
}
- my $current_dir = $args{from_dir} || path('.');
my $fill_blank_data = __load_fill_blank_data($current_dir);
my $is_debian_package = -d 'debian';
@@ -534,6 +576,36 @@ license information. Information are packed in a way to ease review and
maintenance. Files information is grouped with wildcards ('*') to reduce
the list of files.
+=head1 Selecting or ignoring files to scan
+
+By default, the decision whether to scan a file or not is left to L<licensecheck>.
+
+You can override this behavior in file
+C<debian/copyright-scan-patterns.yml>. This YAML file can
+contain a list of suffixes or patterns to scan or to ignore. Any file
+that is not scanned or ignored will be shown as "skipped".
+
+The file must have the following structure (all fields are optional
+and order does not matter):
+
+ ---
+ check :
+ suffixes :
+ - PL # check .PL$
+ - pl
+ pattern:
+ - /README$
+ ignore :
+ suffixes :
+ - yml
+ pattern :
+ - /t/
+ - /models/
+ - /debian/
+ - /Changes
+
+Do not specify the dot with the suffixes. This will be added by the scanner.
+
=head1 Filling the blanks
Sometimes, upstream coders are not perfect: some source files cannot
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libconfig-model-dpkg-perl.git
More information about the Pkg-perl-cvs-commits
mailing list