Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: third_party/boto/bin/lss3

Issue 698893003: Update checked in version of gsutil to version 4.6 (Closed) Base URL: http://dart.googlecode.com/svn/third_party/gsutil/
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/boto/bin/glacier ('k') | third_party/boto/bin/mturk » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/boto/bin/lss3
===================================================================
--- third_party/boto/bin/lss3 (revision 33376)
+++ third_party/boto/bin/lss3 (working copy)
@@ -1,14 +1,17 @@
#!/usr/bin/env python
import boto
+from boto.exception import S3ResponseError
from boto.s3.connection import OrdinaryCallingFormat
+
def sizeof_fmt(num):
- for x in ['b ','KB','MB','GB','TB', 'XB']:
+ for x in ['b ', 'KB', 'MB', 'GB', 'TB', 'XB']:
if num < 1024.0:
return "%3.1f %s" % (num, x)
num /= 1024.0
return "%3.1f %s" % (num, x)
+
def list_bucket(b, prefix=None, marker=None):
"""List everything in a bucket"""
from boto.s3.prefix import Prefix
@@ -39,45 +42,63 @@
elif g.permission == "FULL_CONTROL":
mode = "-rwxrwx"
if isinstance(k, Key):
- print "%s\t%s\t%010s\t%s" % (mode, k.last_modified,
- sizeof_fmt(size), k.name)
+ print "%s\t%s\t%010s\t%s" % (mode, k.last_modified,
+ sizeof_fmt(size), k.name)
else:
#If it's not a Key object, it doesn't have a last_modified time, so
#print nothing instead
- print "%s\t%s\t%010s\t%s" % (mode, ' '*24,
- sizeof_fmt(size), k.name)
+ print "%s\t%s\t%010s\t%s" % (mode, ' ' * 24,
+ sizeof_fmt(size), k.name)
total += size
- print "="*80
+ print "=" * 80
print "\t\tTOTAL: \t%010s \t%i Files" % (sizeof_fmt(total), num)
-def list_buckets(s3):
+
+def list_buckets(s3, display_tags=False):
"""List all the buckets"""
for b in s3.get_all_buckets():
print b.name
+ if display_tags:
+ try:
+ tags = b.get_tags()
+ for tag in tags[0]:
+ print " %s:%s" % (tag.key, tag.value)
+ except S3ResponseError as e:
+ if e.status != 404:
+ raise
-if __name__ == "__main__":
+
+def main():
import optparse
import sys
- if len(sys.argv) < 2:
- list_buckets(boto.connect_s3())
- sys.exit(0)
-
- parser = optparse.OptionParser()
+ usage = "usage: %prog [options] [BUCKET1] [BUCKET2]"
+ description = "List all S3 buckets OR list keys in the named buckets"
+ parser = optparse.OptionParser(description=description, usage=usage)
parser.add_option('-m', '--marker',
help='The S3 key where the listing starts after it.')
+ parser.add_option('-t', '--tags', action='store_true',
+ help='Display tags when listing all buckets.')
options, buckets = parser.parse_args()
marker = options.marker
+ if not buckets:
+ list_buckets(boto.connect_s3(), options.tags)
+ sys.exit(0)
+
+ if options.tags:
+ print "-t option only works for the overall bucket list"
+ sys.exit(1)
+
pairs = []
mixedCase = False
for name in buckets:
- if "/" in name:
- pairs.append(name.split("/",1))
- else:
- pairs.append([name, None])
- if pairs[-1][0].lower() != pairs[-1][0]:
- mixedCase = True
+ if "/" in name:
+ pairs.append(name.split("/", 1))
+ else:
+ pairs.append([name, None])
+ if pairs[-1][0].lower() != pairs[-1][0]:
+ mixedCase = True
if mixedCase:
s3 = boto.connect_s3(calling_format=OrdinaryCallingFormat())
@@ -86,3 +107,7 @@
for name, prefix in pairs:
list_bucket(s3.get_bucket(name), prefix, marker=marker)
+
+
+if __name__ == "__main__":
+ main()
« no previous file with comments | « third_party/boto/bin/glacier ('k') | third_party/boto/bin/mturk » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698