Mercurial > repos > shellac > guppy_basecaller
diff env/bin/lss3 @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/bin/lss3 Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -#!/Users/pldms/Development/Projects/2020/david-matthews-galaxy/guppy_basecaller/env/bin/python3 -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']: - 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 - from boto.s3.key import Key - total = 0 - - if prefix: - if not prefix.endswith("/"): - prefix = prefix + "/" - query = b.list(prefix=prefix, delimiter="/", marker=marker) - print("%s" % prefix) - else: - query = b.list(delimiter="/", marker=marker) - - num = 0 - for k in query: - num += 1 - mode = "-rwx---" - if isinstance(k, Prefix): - mode = "drwxr--" - size = 0 - else: - size = k.size - for g in k.get_acl().acl.grants: - if g.id == None: - if g.permission == "READ": - mode = "-rwxr--" - 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)) - 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)) - total += size - print ("=" * 80) - print ("\t\tTOTAL: \t%010s \t%i Files" % (sizeof_fmt(total), num)) - - -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 - - -def main(): - import optparse - import sys - - 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 mixedCase: - s3 = boto.connect_s3(calling_format=OrdinaryCallingFormat()) - else: - s3 = boto.connect_s3() - - for name, prefix in pairs: - list_bucket(s3.get_bucket(name), prefix, marker=marker) - - -if __name__ == "__main__": - main()