diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-05-08 16:11:39 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-05-08 16:11:39 -0400 |
commit | a50fb83394b11aa9d794fed7b471b27b66a553d3 (patch) | |
tree | c9d248bb79f63c85cf35ce40fe2e679779472703 | |
parent | b7950d8d01875747cfe74328358c3ff0304e4ad4 (diff) | |
download | ikiwiki-a50fb83394b11aa9d794fed7b471b27b66a553d3.tar ikiwiki-a50fb83394b11aa9d794fed7b471b27b66a553d3.tar.gz |
add --delete-bucket option
-rw-r--r-- | IkiWiki/Plugin/amazon_s3.pm | 21 | ||||
-rw-r--r-- | 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. |