Imported Upstream version 2.11~beta2+ds
[debian/jabref.git] / htdocs-helper / validate-htdocs-syntax.pl
1 #!/usr/bin/perl
2
3 #validate-htdocs-syntax.pl
4 #(c) 2012 Oliver Kopp
5
6 #This scripts validates the syntax of all files in the htdocs directory
7 #using tidy
8
9 #This script requires "tidy".
10 #It was tested using cygwin's perl and cygwin's tidy.
11
12 #Start it from the root directory of your git repository.
13 #  Windows: perl validate-htdocs-syntax.pl
14
15 #There are NO command line parameters
16
17 #configuration: should there be a prompt after each error?
18 use constant WAITAFTEREACHERROR => 1;
19
20
21 #configuration: directory to check
22
23 #online web site
24 use constant STARTDIR => "../../htdocs";
25
26 #single help
27 #use constant STARTDIR => "../../htdocs/help/ja";
28
29 #JabRef help
30 #  never validates as no HTML head is used and no DOCTYPE is declared.
31 #use constant STARTDIR => "../src/main/resources/help/";
32
33
34 use File::Find;
35 use strict;
36
37 sub wait_for_keypress {
38     return unless WAITAFTEREACHERROR;
39     print "Press 'Return' to continue. (Enter \"exit\" to exit the whole process)\n";
40     my $input = <STDIN>;
41         exit 0 if $input =~ /exit/;
42 }
43
44 sub verifyFile {
45         return unless -f;
46         #my $fullfilename = $File::Find::name;
47         my $filename = $_;
48         return unless ($filename =~ /(\.php)|(\.html)$/);
49
50         #Debug output
51         #print "Checking $File::Find::name\n";
52
53         system("tidy", "-eq", "-utf8", "$filename");
54
55         if ($? == -1) {
56                 print ("Failed to execute tidy.");
57         } elsif ($? & 127) {
58                 printf "child died with signal %d, %s coredump\n",
59                 ($? & 127), ($? & 128) ? 'with' : 'without';
60         } elsif ($? != 0) {
61                 #some error occured
62
63                 # html/php line offset is 11. I.e., if tidy outputs "276", the line in the .html is "265"
64                 print "Above file was $File::Find::name and has errors\n\n";
65                 wait_for_keypress;
66         }
67 }
68
69 #Debug call
70 #find(\&verifyFile, ("htdocs/contact.php"));
71
72 find(\&verifyFile, (STARTDIR));