18574: Adds tests for value list conversions.
[arvados.git] / sdk / python / bin / arv-normalize
index b1a6ca7b42970f100b4badba45f6755aeb4094d8..effcd7edae0b0c1533717535a9b5b686e50e3ff6 100755 (executable)
@@ -1,4 +1,7 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
 
 import argparse
 import hashlib
@@ -6,19 +9,38 @@ import os
 import re
 import string
 import sys
-import logging
 
-logger = logging.getLogger(os.path.basename(sys.argv[0]))
+import arvados
+from arvados._version import __version__
 
 parser = argparse.ArgumentParser(
     description='Read manifest on standard input and put normalized manifest on standard output.')
 
-args = parser.parse_args()
+parser.add_argument('--extract', type=str,
+                    help="The file to extract from the input manifest")
+parser.add_argument('--strip', action='store_true',
+                    help="Strip authorization tokens")
+parser.add_argument('--version', action='version',
+                    version="%s %s" % (sys.argv[0], __version__),
+                    help='Print version and exit.')
 
-import arvados
+args = parser.parse_args()
 
 r = sys.stdin.read()
-    
+
 cr = arvados.CollectionReader(r)
 
-print cr.manifest_text()
+if args.extract:
+    i = args.extract.rfind('/')
+    if i == -1:
+        stream = '.'
+        fn = args.extract
+    else:
+        stream = args.extract[:i]
+        fn = args.extract[(i+1):]
+    for s in cr.all_streams():
+        if s.name() == stream:
+            if fn in s.files():
+                sys.stdout.write(s.files()[fn].as_manifest())
+else:
+    sys.stdout.write(cr.manifest_text(strip=args.strip, normalize=True))