From 3d6bc6e1b7145d85cd9495fd0a0d0a6823869368 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 23 Aug 2009 15:18:41 -0400 Subject: Add rsync plugin, though the only rsync-specific thing about it is the assumption that uploading an entire site is efficient. --- IkiWiki/Plugin/rsync.pm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 IkiWiki/Plugin/rsync.pm (limited to 'IkiWiki/Plugin/rsync.pm') diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm new file mode 100644 index 000000000..630469528 --- /dev/null +++ b/IkiWiki/Plugin/rsync.pm @@ -0,0 +1,47 @@ +#!/usr/bin/perl +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); +} + +sub getsetup () { + return + plugin => { + safe => 0, + rebuild => 0, + }, + 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", + safe => 0, + rebuild => 0, + }, +} + +sub checkconfig { + if (! exists $config{rsync_command} || + ! defined $config{rsync_command}) { + error("Must specify rsync_command"); + } +} + +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)); + } +} + +1 -- cgit v1.2.3 From 844169c9b06830df33ccde8abead015128baa496 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 23 Aug 2009 15:21:39 -0400 Subject: I'm not redefining any subs after all, don't prevent those warnings. --- IkiWiki/Plugin/rsync.pm | 1 - 1 file changed, 1 deletion(-) (limited to 'IkiWiki/Plugin/rsync.pm') diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm index 630469528..62ecc4e38 100644 --- a/IkiWiki/Plugin/rsync.pm +++ b/IkiWiki/Plugin/rsync.pm @@ -2,7 +2,6 @@ package IkiWiki::Plugin::rsync; use warnings; -no warnings 'redefine'; use strict; use IkiWiki 3.00; -- cgit v1.2.3 From 607534cecc7ab1bfefd1df1bfe19e4d7c338029b Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 23 Aug 2009 15:43:18 -0400 Subject: Explain that command must run unattended, and lose the debug statement. --- IkiWiki/Plugin/rsync.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'IkiWiki/Plugin/rsync.pm') diff --git a/IkiWiki/Plugin/rsync.pm b/IkiWiki/Plugin/rsync.pm index 62ecc4e38..3f049457b 100644 --- a/IkiWiki/Plugin/rsync.pm +++ b/IkiWiki/Plugin/rsync.pm @@ -20,7 +20,7 @@ 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", + description => "unattended command to upload regenerated pages", safe => 0, rebuild => 0, }, @@ -34,7 +34,6 @@ sub checkconfig { } sub postrefresh () { - debug "in postrefresh hook, gonna run rsync"; system $config{rsync_command}; if ($? == -1) { error("failed to execute rsync_command: $!"); -- cgit v1.2.3