- #!/usr/bin/perl
- package IkiWiki::Plugin::rsync;
- use warnings;
- use strict;
- use IkiWiki 3.00;
- sub import {
- hook(type => "getsetup", id => "rsync", call => \&getsetup);
- hook(type => "change", id => "rsync", call => \&postrefresh);
- hook(type => "delete", id => "rsync", call => \&postrefresh);
- }
- sub getsetup () {
- return
- plugin => {
- safe => 0,
- rebuild => 0,
- },
- rsync_command => {
- type => "string",
- example => "rsync -qa --delete . user\@host:/path/to/docroot/",
- description => "command to run to sync updated pages",
- safe => 0,
- rebuild => 0,
- },
- }
- my $ran=0;
- sub postrefresh () {
- 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";
- }
- }
- }
- 1
|