resetalreadyfiltered();
require IkiWiki::Render;
foreach my $file (@rendered) {
- debug(sprintf(gettext("building %s"), $file));
- IkiWiki::render($file);
+ IkiWiki::render($file, sprintf(gettext("building %s"), $file));
}
}
my $updated_po_files=0;
# Refresh/create POT and PO files as needed.
- # (But avoid doing so if they are in an underlay directory.)
foreach my $file (grep {istranslatablefile($_)} @rendered) {
my $masterfile=srcfile($file);
my $page=pagename($file);
my $updated_pot_file=0;
+
+ # Avoid touching underlay files.
+ next if $masterfile ne "$config{srcdir}/$file";
+
# Only refresh POT file if it does not exist, or if
- # $pagesources{$page} was changed: don't if only the HTML was
+ # the source was changed: don't if only the HTML was
# refreshed, e.g. because of a dependency.
- if ($masterfile eq "$config{srcdir}/$file" &&
- ((grep { $_ eq $pagesources{$page} } @origneedsbuild)
- || ! -e potfile($masterfile))) {
+ if ((grep { $_ eq $pagesources{$page} } @origneedsbuild) ||
+ ! -e potfile($masterfile)) {
refreshpot($masterfile);
$updated_pot_file=1;
}
my @pofiles;
foreach my $po (pofiles($masterfile)) {
- next if ! $updated_pot_file && ! -e $po;
+ next if ! $updated_pot_file && -e $po;
next if grep { $po=~/\Q$_\E/ } @{$config{underlaydirs}};
push @pofiles, $po;
}
IkiWiki::saveindex();
}
-# on success, returns the filtered content.
-# on error, if $nonfatal, warn and return undef; else, error out.
-sub po_to_markup ($$;$) {
+sub po_to_markup ($$) {
my ($page, $content) = (shift, shift);
- my $nonfatal = shift;
$content = '' unless defined $content;
$content = decode_utf8(encode_utf8($content));
my $fail = sub ($) {
my $msg = "po(po_to_markup) - $page : " . shift;
- if ($nonfatal) {
- warn $msg;
- return undef;
- }
error($msg, sub { unlink $infile, $outfile});
};
$doc->write($outfile)
or return $fail->(sprintf(gettext("failed to write %s"), $outfile));
- $content = readfile($outfile)
- or return $fail->(sprintf(gettext("failed to read %s"), $outfile));
+ $content = readfile($outfile);
# Unlinking should happen automatically, thanks to File::Temp,
# but it does not work here, probably because of the way writefile()