#!/usr/bin/perl
#window checkHTML timeout=600
=what
対象のディレクトリのすべてのhtmlファイルの文法チェック
=usage
対象のディレクトリに移動して実行
=cut
use strict;
use File::Find;
use vars qw/*name *dir *prune/;
*name = *File::Find::name;
*dir = *File::Find::dir;
*prune = *File::Find::prune;
#config
my $gOpenWithApp = 'mi';
my $gOutputFileName = '____result.checkHTML';
my $gCheckHTMLScript = 'checkHTML.pl';
#global
my $gIsPrintToFile = 0;
my @gResultArray;
my ( $gScriptFolder, $gScriptName ) = $0 =~ m!(.*)/(.+?)$!;
#
&run();
#
sub run
{
my $folder = './';
my $fileName = $ARGV[0];
if( $ARGV[0] eq '-printToFile' )
{
$gIsPrintToFile = 1;
}
elsif( $ARGV[0] =~ m!(.*)/(.+?)$! )
{
$folder = $1;
$fileName = $2;
}
chdir( $folder );
my $date = `date '+%m/%d %H:%M'`;
chop $date;
my $header = "CHECK : $folder : $date \n";
print $header;
print "【htmllint結果 linkCheck結果 : ファイル名】\n";
File::Find::find( {wanted => \&callback_filefind}, $folder );
if( $gIsPrintToFile )
{
open( STDOUT, "> $gOutputFileName" ) || die "Cant open $gOutputFileName";
select( STDOUT ); $| = 1;
}
print STDOUT "○ $header";
foreach( @gResultArray )
{
print STDOUT $_;
}
close( STDOUT );
if( $gIsPrintToFile )
{
`open -a $gOpenWithApp $gOutputFileName`;
}
`say 'ohwari'`;
}
sub callback_filefind
{
if( /^(|image|images|css|javascript|cgi-bin|dmg|sit)$/ )
{ #除外フォルダ
print "** skip : $_\n";
$prune = 1;
}
if( /^___/ )
{ #除外特例
print "** skip : $_\n";
$prune = 1;
}
elsif( /\.s?html?$/s )
{
print "check $_\n";
my $checkResult = `perl $gScriptFolder/$gCheckHTMLScript $name`;
#"PATHNAME:$name\nFOLDER:$dir\nNAME:$_\n",, "--\n--\n"
push( @gResultArray, $checkResult );
}
}