generate-inspector-html-with-extras [plain text]
use strict;
use Getopt::Long;
use File::Basename;
use File::Path;
my $inputHtmlFile;
my $outputDirectory;
my $outputHtmlFileName;
our $extrasDirectory;
our $extrasDirectoryBasename;
GetOptions('input-html=s' => \$inputHtmlFile,
'output-directory=s' => \$outputDirectory,
'output-html-file-name=s' => \$outputHtmlFileName,
'extras-directory=s' => \$extrasDirectory);
unless (defined $inputHtmlFile and defined $outputDirectory and defined $outputHtmlFileName and defined $extrasDirectory) {
print "Usage: $0 --input-html <path> --output-directory <path> --output-html-file-name <name> --extras-directory <path>\n";
exit 1;
}
my $htmlDirectory = dirname($inputHtmlFile);
my $htmlContents;
{
local $/;
open HTML, $inputHtmlFile or die "Can't open $inputHtmlFile: $!";
$htmlContents = <HTML>;
close HTML;
}
$htmlContents =~ m/<head>(.*)<\/head>/si;
my $headContents = $1;
$extrasDirectoryBasename = basename($extrasDirectory);
$headContents .= extraResourcesString();
$htmlContents =~ s/<head>.*<\/head>/<head>$headContents<\/head>/si;
open HTML, ">", "$outputDirectory/$outputHtmlFileName" or die "Can't open $outputDirectory/$outputHtmlFileName: $!";
print HTML $htmlContents;
close HTML;
sub extraResourcesString
{
my $str = "\n";
$str .= " <!-- Extra Resources -->\n";
my @files = <$extrasDirectory/*>;
foreach my $file (@files) {
next if -d $file;
$str .= includeStringForFile($file);
}
return $str;
}
sub includeStringForFile($)
{
my ($file) = @_;
my $basename = basename($file);
if ($basename =~ /\.js$/) {
return " <script type=\"text/javascript\" src=\"$extrasDirectoryBasename/$basename\"></script>\n";
} elsif ($basename =~ /\.css$/) {
return " <link rel=\"stylesheet\" type=\"text/css\" href=\"$extrasDirectoryBasename/$basename\">\n";
} else {
print "Do not know how to handle \"$file\".\n";
}
}