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 () {
},
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";
+ }
}
}