Start of thread

master
https://www.google.com/accounts/o8/id?id=AItOawlSFgIlytGZgMLh_Cw4IA011V8pLKk5dVg 2013-11-28 17:19:13 -04:00 committed by admin
parent 1159e4de07
commit 426ed67b32
1 changed files with 29 additions and 0 deletions

View File

@ -0,0 +1,29 @@
I would like to use ikiwiki to build a static site which needs some transformations to be made on binary assets. A simple example is to translate a .odp presentation to .pdf using (e.g.) unoconv. If I add a new .odp attachment, or push one into the repo, I want the corresponding .pdf to appear in the generated site. What's the right place to hook in to do this?
I've made an experimental prototype which hooks into needsbuild, builds the pages then and there, and at the same time removes them from the list of pages to be built.
~~~
sub needsbuild {
my $files=shift;
my $nfiles=[];
foreach my $f (@$files) {
if ($f =~ /\.odp$/) {
my $g = $f;
$g =~ s/\.odp$/\.pdf/;
debug("building $f to $g");
will_render($f, $g);
if (system("unoconv","-f","pdf","-o",IkiWiki::dirname("$config{destdir}/$g"),srcfile($f)) != 0) {
error("unoconv: failed to translate $f to $g");
}
}
else {
push @$nfiles, $f;
}
};
return $nfiles;
}
~~~
It appears to work, but is this the right way to do it, bearing in mind ikiwiki's dependency tracking and the like? And is the usage of will_render() correct?
[[BrianCandler]]