111 lines
2.4 KiB
Perl
Executable file
111 lines
2.4 KiB
Perl
Executable file
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
use File::Path;
|
|
use Fatal qw/mkpath symlink open close/;
|
|
use File::Copy;
|
|
use File::Find;
|
|
|
|
|
|
scalar @ARGV == 1 or die;
|
|
|
|
my $TGT=$ARGV[0];
|
|
my $SRC=$TGT.".orig";
|
|
|
|
move($TGT, $SRC);
|
|
|
|
# list of languages
|
|
my @lang = glob("$SRC/index.html.*") or die;
|
|
map { s{^.*html\.}{} } @lang;
|
|
|
|
# map "ja.euc-jp" to "ja/", ...
|
|
my %lpath;
|
|
foreach my $l (@lang) {
|
|
my $t=$l;
|
|
$t =~ s{\..*$}{};
|
|
$lpath{$l}="$t/";
|
|
}
|
|
|
|
my @html;
|
|
find(sub { $File::Find::name =~ s/^$SRC\///; push(@html, $File::Find::name) if $File::Find::name =~ /\.html$/; }, $SRC);
|
|
|
|
foreach my $h (@html) {
|
|
my $dir="";
|
|
if ($h =~ m{^(.*/)}) {
|
|
$dir=$1;
|
|
}
|
|
|
|
for my $l (@lang) {
|
|
my $tdir="$TGT/$lpath{$l}";
|
|
-d "$tdir$dir" || mkpath("$tdir$dir");
|
|
|
|
my $updir=$dir;
|
|
$updir =~ s{[^/]+}{..}g;
|
|
$updir .= "..";
|
|
|
|
if ($l eq "en") {
|
|
conv("$SRC/$h.en", "$tdir$h", $h, $updir);
|
|
}
|
|
elsif ( -f "$SRC/$h.$l" ) {
|
|
conv("$SRC/$h.$l", "$tdir$h", $h, $updir);
|
|
}
|
|
else {
|
|
symlink("$updir/en/$h", "$tdir$h");
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
open(my $out, ">", "$TGT/index.html");
|
|
print $out '<html><head>',
|
|
'<meta http-equiv="refresh" content="0; URL=en/index.html">',
|
|
"</head>\n<body>\n<table>";
|
|
foreach my $l (sort values %lpath) {
|
|
print $out qq{<tr><td><a href="${l}index.html">$l</a></td></tr>\n};
|
|
}
|
|
print $out '</table></body></html>';
|
|
|
|
move("$SRC/images", "$TGT/images");
|
|
move("$SRC/style", "$TGT/style");
|
|
rmdir("$TGT/style/lang");
|
|
rmdir("$TGT/style/xsl/util");
|
|
rmdir("$TGT/style/xsl");
|
|
rmtree("$SRC");
|
|
|
|
|
|
### END
|
|
|
|
|
|
sub conv {
|
|
my ($old, $new, $name, $updir) = @_;
|
|
|
|
open(my $in, "<", $old);
|
|
local $/;
|
|
my $file = <$in>;
|
|
close($in);
|
|
|
|
# /mod/ -> /mod/index.html
|
|
$file =~ s{href="([^:"]*/)"}{href="${1}index.html"}g;
|
|
|
|
# style and images now one level up
|
|
$file =~ s{(src|href)="\.\./(style|images)}{$1="../../$2}g;
|
|
$file =~ s{(src|href)="(?:\./)?(style|images)}{$1="../$2}g;
|
|
|
|
foreach my $l (values %lpath) {
|
|
# language directories one level up
|
|
$file =~ s{href="\.\./$l}{href="../../$l}g;
|
|
$file =~ s{href="(?:\./)?$l}{href="../$l}g;
|
|
$file =~ s{apachectl(?!\.html)}{apache2ctl}g;
|
|
}
|
|
|
|
# Debian tweaks
|
|
$file =~ s{/usr/local/apache2/conf/httpd[.]conf}{/etc/apache2/apache2.conf}g;
|
|
$file =~ s{httpd[.]conf}{apache2.conf}g;
|
|
$file =~ s{apachectl(?!\.html)}{apache2ctl}g;
|
|
$file =~ s{https://www.apache.org/images/SupportApache-small.png}{$updir/images/SupportApache-small.png}g;
|
|
|
|
|
|
open(my $out, ">", $new);
|
|
print $out $file;
|
|
close($out);
|
|
}
|