annotate admin/check_INDEX.pl @ 12720:52ca082757c2 octave-forge tip

Update copyright notices.
author i7tiol
date Sat, 27 Feb 2016 11:21:29 +0000
parents 483dd1ed9500
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8389
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
1 #!/usr/bin/perl
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
2 ## Copyright (C) 2011 Carnë Draug <carandraug+dev@gmail.com>
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
3 ##
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
4 ## This program is free software; you can redistribute it and/or modify
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
5 ## it under the terms of the GNU General Public License as published by
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
6 ## the Free Software Foundation; either version 3 of the License, or
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
7 ## (at your option) any later version.
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
8 ##
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
9 ## This program is distributed in the hope that it will be useful,
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
12 ## GNU General Public License for more details.
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
13 ##
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
14 ## You should have received a copy of the GNU General Public License
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
15 ## along with this program; if not, see <http://www.gnu.org/licenses/>.
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
16
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
17 use 5.010; # Use Perl 5.10
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
18 use strict; # Enforce some good programming rules
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
19 use warnings; # Replacement for the -w flag, but lexically scoped
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
20 use File::Spec; # Perform operation on file names
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
21
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
22 foreach my $package_dir (@ARGV) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
23 open (INDEX, "<", File::Spec->catfile ($package_dir, "INDEX") ) or die "Could not open INDEX file for read: $!";
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
24 my %functions;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
25 while (my $line = <INDEX>) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
26 if ($line =~ m/^ (.*)$/) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
27 my $line = $1;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
28 ## some lines will have more than one function, separated by a space so get them too
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
29 my @list = split (/\s/, $line);
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
30 $functions{$_} = 1 foreach @list;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
31 ## some lines will have extra whitespace (trailing whitespace) which could be removed
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
32 say "Line of '$line' has trailing whitespace" if $line =~ m/\s$/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
33 ## we only need a space at the start of the line
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
34 say "Line of '$line' has extra leading whitespace" if $line =~ m/^\s/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
35 ## use spaces, not tabs
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
36 say "Line of '$line' uses tabs instead of spaces" if $line =~ m/\t/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
37 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
38 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
39 close(INDEX);
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
40 my @files;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
41 push (@files, get_files(File::Spec->catfile ($package_dir, 'inst')) );
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
42 push (@files, get_files(File::Spec->catfile ($package_dir, 'src')) );
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
43 clean_array(\@files);
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
44 foreach (@files) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
45 say "'$_' is missing on INDEX" unless delete $functions{$_};
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
46 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
47 foreach (keys %functions) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
48 say "'$_' is in the INDEX but there's no file for it";
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
49 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
50 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
51
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
52 sub get_files {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
53 my $dirname = $_[0];
8415
483dd1ed9500 check_INDEX admin script: do not die when a directory does not exist
carandraug
parents: 8414
diff changeset
54 unless (-e $dirname) {
483dd1ed9500 check_INDEX admin script: do not die when a directory does not exist
carandraug
parents: 8414
diff changeset
55 say "There is no dir $dirname. That may be ok...";
483dd1ed9500 check_INDEX admin script: do not die when a directory does not exist
carandraug
parents: 8414
diff changeset
56 return;
483dd1ed9500 check_INDEX admin script: do not die when a directory does not exist
carandraug
parents: 8414
diff changeset
57 }
8389
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
58 opendir (DIR, $dirname) or die "Could not opendir $dirname: $!";
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
59 my @files;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
60 while (my $file = readdir(DIR)) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
61 next if $file =~ m/^\.\.?$/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
62 next if $file eq 'Makefile';
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
63 next if $file =~ m/^\.svn(ignore)?$/;
8414
2fb8f9b37a1c check_INDEX admin script: skip private directory
carandraug
parents: 8389
diff changeset
64 next if ($file eq 'private' && -d File::Spec->catfile ($dirname, $file) );
8389
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
65 $file =~ s/\.m$// if $dirname =~ m/inst$/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
66 $file =~ s/\.c(c)?$// if $dirname =~ m/src$/;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
67 push (@files, $file);
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
68 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
69 closedir(DIR);
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
70 return @files;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
71 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
72
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
73 sub clean_array {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
74 my %hash;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
75 foreach (@{$_[0]}) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
76 if ($hash{$_}) {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
77 say "Ups! It seems that the function '$_' is repeated (maybe in inst and again in src)";
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
78 } else {
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
79 $hash{$_} = 1;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
80 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
81 }
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
82 @{$_[0]} = keys %hash;
2d58d47badbd check_INDEX: new function for admin
carandraug
parents:
diff changeset
83 }