]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/rsync.pm
Merge branch 'master' of ssh://git.ikiwiki.info
[git.ikiwiki.info.git] / IkiWiki / Plugin / rsync.pm
index 7c3fc127cf6f2c15f18cf18399aca4c5556383f0..1b85ea000120846ca5426e97be3603425e83cb1f 100644 (file)
@@ -7,8 +7,8 @@ use IkiWiki 3.00;
 
 sub import {
        hook(type => "getsetup", id => "rsync", call => \&getsetup);
-       hook(type => "checkconfig", id => "rsync", call => \&checkconfig);
-       hook(type => "postrefresh", id => "rsync", call => \&postrefresh);
+       hook(type => "rendered", id => "rsync", call => \&postrefresh);
+       hook(type => "delete", id => "rsync", call => \&postrefresh);
 }
 
 sub getsetup () {
@@ -26,20 +26,19 @@ sub getsetup () {
                },
 }
 
-sub checkconfig {
-       if (! exists $config{rsync_command} ||
-           ! defined $config{rsync_command}) {
-               error("Must specify rsync_command");
-       }
-}
+my $ran=0;
 
 sub postrefresh () {
-       chdir($config{destdir}) || error("chdir: $!");
-       system $config{rsync_command};
-       if ($? == -1) {
-               error("failed to execute rsync_command: $!");
-       } elsif ($? != 0) {
-               error(sprintf("rsync_command exited %d", $? >> 8));
+       if (defined $config{rsync_command} && ! $ran) {
+               $ran=1;
+               chdir($config{destdir}) || error("chdir: $!");
+               system $config{rsync_command};
+               if ($? == -1) {
+                       warn(sprintf(gettext("failed to execute rsync_command: %s"), $!))."\n";
+               }
+               elsif ($? != 0) {
+                       warn(sprintf(gettext("rsync_command exited %d"), $? >> 8))."\n";
+               }
        }
 }