X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/ddef0d3170b1543e6ed580c7ce00849e3ed1550f..27071f0ba9c0204980f3ab8c188ebb6319483851:/IkiWiki/Plugin/amazon_s3.pm diff --git a/IkiWiki/Plugin/amazon_s3.pm b/IkiWiki/Plugin/amazon_s3.pm index e181a84da..0482178ea 100644 --- a/IkiWiki/Plugin/amazon_s3.pm +++ b/IkiWiki/Plugin/amazon_s3.pm @@ -4,7 +4,7 @@ package IkiWiki::Plugin::amazon_s3; use warnings; no warnings 'redefine'; use strict; -use IkiWiki 2.00; +use IkiWiki 3.00; use IkiWiki::Render; use Net::Amazon::S3; @@ -16,13 +16,13 @@ BEGIN { } }; -sub import { #{{{ +sub import { hook(type => "getopt", id => "amazon_s3", call => \&getopt); hook(type => "getsetup", id => "amazon_s3", call => \&getsetup); hook(type => "checkconfig", id => "amazon_s3", call => \&checkconfig); -} # }}} +} -sub getopt () { #{{{ +sub getopt () { eval q{use Getopt::Long}; error($@) if $@; Getopt::Long::Configure('pass_through'); @@ -38,11 +38,15 @@ sub getopt () { #{{{ debug(gettext("done")); exit(0); }); -} #}}} +} -sub getsetup () { #{{{ +sub getsetup () { return - amazon_s3_key_id => { + plugin => { + safe => 0, + rebuild => 0, + }, + amazon_s3_key_id => { type => "string", example => "XXXXXXXXXXXXXXXXXXXX", description => "public access key id", @@ -59,7 +63,7 @@ sub getsetup () { #{{{ amazon_s3_bucket => { type => "string", example => "mywiki", - description => "globally unique name of bucket to store wiki in", + description => "globally unique name of bucket to store wiki into", safe => 1, rebuild => 1, }, @@ -84,9 +88,9 @@ sub getsetup () { #{{{ safe => 1, rebuild => 1, }, -} #}}} +} -sub checkconfig { #{{{ +sub checkconfig { foreach my $field (qw{amazon_s3_key_id amazon_s3_key_file amazon_s3_bucket}) { if (! exists $config{$field} || ! defined $config{$field}) { @@ -97,11 +101,11 @@ sub checkconfig { #{{{ ! defined $config{amazon_s3_prefix}) { $config{amazon_s3_prefix}="wiki/"; } -} #}}} +} { my $bucket; -sub getbucket { #{{{ +sub getbucket { return $bucket if defined $bucket; open(IN, "<", $config{amazon_s3_key_file}) || error($config{amazon_s3_key_file}.": ".$!); @@ -129,16 +133,16 @@ sub getbucket { #{{{ } if (! $bucket) { - error(gettext("Failed to create bucket in S3: "). + error(gettext("Failed to create bucket inside S3: "). $s3->err.": ".$s3->errstr."\n"); } return $bucket; -} #}}} +} } # Given a file, return any S3 keys associated with it. -sub file2keys ($) { #{{{ +sub file2keys ($) { my $file=shift; my @keys; @@ -158,14 +162,14 @@ sub file2keys ($) { #{{{ } } return @keys; -} #}}} +} package IkiWiki; use File::MimeInfo; use Encode; # This is a wrapper around the real writefile. -sub writefile ($$$;$$) { #{{{ +sub writefile ($$$;$$) { my $file=shift; my $destdir=shift; my $content=shift; @@ -214,17 +218,17 @@ sub writefile ($$$;$$) { #{{{ } } if (! $res) { - error(gettext("Failed to save file to S3: "). + error(gettext("Failed to save file into S3: "). $bucket->err.": ".$bucket->errstr."\n"); } } } return $ret; -} #}}} +} # This is a wrapper around the real prune. -sub prune ($) { #{{{ +sub prune ($) { my $file=shift; my @keys=IkiWiki::Plugin::amazon_s3::file2keys($file); @@ -236,13 +240,13 @@ sub prune ($) { #{{{ foreach my $key (@keys) { my $res=$bucket->delete_key($key); if (! $res) { - error(gettext("Failed to delete file from S3: "). + error(gettext("Failed to delete file inside S3: "). $bucket->err.": ".$bucket->errstr."\n"); } } } return $IkiWiki::Plugin::amazon_s3::subs{'IkiWiki::prune'}->($file); -} #}}} +} 1