add --delete-bucket option
authorJoey Hess <joey@kodama.kitenet.net>
Thu, 8 May 2008 20:11:39 +0000 (16:11 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Thu, 8 May 2008 20:11:39 +0000 (16:11 -0400)
IkiWiki/Plugin/amazon_s3.pm
doc/plugins/amazon_s3.mdwn

index 6652b9fba6a424512f95db2234160721e24c7881..e1ce4ae08deb74cba2cbdaa6e8f31afc20929751 100644 (file)
@@ -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: ").
index 66042bfbeeaa2e85eb0dc7819c9412bd500dc19e..caa0c01530be6251683de0fe8b7bda6b790e0354 100644 (file)
@@ -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.