projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '8784-dir-listings'
[arvados.git]
/
sdk
/
python
/
arvados
/
commands
/
get.py
diff --git
a/sdk/python/arvados/commands/get.py
b/sdk/python/arvados/commands/get.py
index 3c7954da8e7fd0916c788e2fd9ed942e638dd674..56d471888d65a8f200bb6ae7af39991286be8aab 100755
(executable)
--- a/
sdk/python/arvados/commands/get.py
+++ b/
sdk/python/arvados/commands/get.py
@@
-1,4
+1,7
@@
#!/usr/bin/env python
#!/usr/bin/env python
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
import argparse
import hashlib
import argparse
import hashlib
@@
-85,6
+88,11
@@
write *anything* if any files exist that would have to be
overwritten. This option causes even devices, sockets, and fifos to be
skipped.
""")
overwritten. This option causes even devices, sockets, and fifos to be
skipped.
""")
+group.add_argument('--strip-manifest', action='store_true', default=False,
+ help="""
+When getting a collection manifest, strip its access tokens before writing
+it.
+""")
def parse_arguments(arguments, stdout, stderr):
args = parser.parse_args(arguments)
def parse_arguments(arguments, stdout, stderr):
args = parser.parse_args(arguments)
@@
-126,7
+134,11
@@
def parse_arguments(arguments, stdout, stderr):
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
global api_client
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
global api_client
-
+
+ if stdout is sys.stdout and hasattr(stdout, 'buffer'):
+ # in Python 3, write to stdout as binary
+ stdout = stdout.buffer
+
args = parse_arguments(arguments, stdout, stderr)
if api_client is None:
api_client = arvados.api('v1')
args = parse_arguments(arguments, stdout, stderr)
if api_client is None:
api_client = arvados.api('v1')
@@
-143,9
+155,6
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
return 1
# User asked to download the collection's manifest
return 1
# User asked to download the collection's manifest
- should_strip_manifest = False
- if re.match(util.keep_locator_pattern, col_loc):
- should_strip_manifest = True
if not get_prefix:
if not args.n:
open_flags = os.O_CREAT | os.O_WRONLY
if not get_prefix:
if not args.n:
open_flags = os.O_CREAT | os.O_WRONLY
@@
-153,11
+162,11
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
open_flags |= os.O_EXCL
try:
if args.destination == "-":
open_flags |= os.O_EXCL
try:
if args.destination == "-":
- stdout.write(reader.manifest_text(strip=
should_strip_manifest
))
+ stdout.write(reader.manifest_text(strip=
args.strip_manifest).encode(
))
else:
out_fd = os.open(args.destination, open_flags)
with os.fdopen(out_fd, 'wb') as out_file:
else:
out_fd = os.open(args.destination, open_flags)
with os.fdopen(out_fd, 'wb') as out_file:
- out_file.write(reader.manifest_text(strip=
should_strip_manifest
))
+ out_file.write(reader.manifest_text(strip=
args.strip_manifest).encode(
))
except (IOError, OSError) as error:
logger.error("can't write to '{}': {}".format(args.destination, error))
return 1
except (IOError, OSError) as error:
logger.error("can't write to '{}': {}".format(args.destination, error))
return 1
@@
-234,7
+243,7
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
if args.hash:
digestor = hashlib.new(args.hash)
try:
if args.hash:
digestor = hashlib.new(args.hash)
try:
- with s.open(f.name, 'r') as file_reader:
+ with s.open(f.name, 'r
b
') as file_reader:
for data in file_reader.readall():
if outfile:
outfile.write(data)
for data in file_reader.readall():
if outfile:
outfile.write(data)
@@
-269,7
+278,7
@@
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
def files_in_collection(c):
# Sort first by file type, then alphabetically by file path.
def files_in_collection(c):
# Sort first by file type, then alphabetically by file path.
- for i in sorted(
c.keys(
),
+ for i in sorted(
list(c.keys()
),
key=lambda k: (
isinstance(c[k], arvados.collection.Subcollection),
k.upper())):
key=lambda k: (
isinstance(c[k], arvados.collection.Subcollection),
k.upper())):