X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3d6bc6e1b7145d85cd9495fd0a0d0a6823869368..1226d9f144310876080c077a9c45bd2257829a32:/IkiWiki/Plugin/rsync.pm?ds=inline

diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm
index 630469528..1b85ea000 100644
--- a/IkiWiki/Plugin/rsync.pm
+++ b/IkiWiki/Plugin/rsync.pm
@@ -2,14 +2,13 @@
 package IkiWiki::Plugin::rsync;
 
 use warnings;
-no warnings 'redefine';
 use strict;
 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 () {
@@ -20,27 +19,26 @@ sub getsetup () {
 		},
 		rsync_command => {
 			type => "string",
-			example => "rsync -qa --delete /path/to/destdir/ user\@host:/path/to/docroot/",
-			description => "command to upload regenerated pages to another host",
+			example => "rsync -qa --delete . user\@host:/path/to/docroot/",
+			description => "command to run to sync updated pages",
 			safe => 0,
 			rebuild => 0,
 		},
 }
 
-sub checkconfig {
-	if (! exists $config{rsync_command} ||
-	    ! defined $config{rsync_command}) {
-		error("Must specify rsync_command");
-	}
-}
+my $ran=0;
 
 sub postrefresh () {
-	debug "in postrefresh hook, gonna run rsync";
-	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";
+		}
 	}
 }