From a50fb83394b11aa9d794fed7b471b27b66a553d3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 8 May 2008 16:11:39 -0400 Subject: [PATCH] add --delete-bucket option --- IkiWiki/Plugin/amazon_s3.pm | 21 +++++++++++++++++++-- doc/plugins/amazon_s3.mdwn | 5 +++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/IkiWiki/Plugin/amazon_s3.pm b/IkiWiki/Plugin/amazon_s3.pm index 6652b9fba..e1ce4ae08 100644 --- a/IkiWiki/Plugin/amazon_s3.pm +++ b/IkiWiki/Plugin/amazon_s3.pm @@ -17,9 +17,28 @@ BEGIN { }; sub import { #{{{ + hook(type => "getopt", id => "aggregate", call => \&getopt); hook(type => "checkconfig", id => "amazon_s3", call => \&checkconfig); } # }}} +sub getopt () { #{{{ + eval q{use Getopt::Long}; + error($@) if $@; + Getopt::Long::Configure('pass_through'); + GetOptions("delete-bucket" => sub { + my $bucket=getbucket(); + debug(gettext("deleting bucket..")); + my $resp = $bucket->list_all or die $bucket->err . ": " . $bucket->errstr; + foreach my $key (@{$resp->{keys}}) { + debug("\t".$key->{key}); + $bucket->delete_key($key->{key}) or die $bucket->err . ": " . $bucket->errstr; + } + $bucket->delete_bucket or die $bucket->err . ": " . $bucket->errstr; + debug(gettext("done")); + exit(0); + }); +} #}}} + sub checkconfig { #{{{ foreach my $field (qw{amazon_s3_key_id amazon_s3_key_file amazon_s3_bucket}) { @@ -131,7 +150,6 @@ sub writefile ($$$;$$) { #{{{ # TODO: investigate using the new copy operation. # (It may not be robust enough.) foreach my $key (@keys) { - debug("storing $key"); my $res; if (! $writer) { $res=$bucket->add_key($key, $content, \%opts); @@ -169,7 +187,6 @@ sub prune ($) { #{{{ my $bucket=IkiWiki::Plugin::amazon_s3::getbucket(); foreach my $key (@keys) { - debug("deleting $key"); my $res=$bucket->delete_key($key); if (! $res) { error(gettext("Failed to delete file from S3: "). diff --git a/doc/plugins/amazon_s3.mdwn b/doc/plugins/amazon_s3.mdwn index 66042bfbe..caa0c0153 100644 --- a/doc/plugins/amazon_s3.mdwn +++ b/doc/plugins/amazon_s3.mdwn @@ -59,3 +59,8 @@ type uploads. Copy and rename detection is not done, so if you copy or rename a large file, it will be re-uploaded, rather than copied. + +## deleting a bucket + +You can use "ikiwiki -setup my.setup --delete-bucket" to delete anything +that's in the configured bucket, and remove the bucket.