3373: Test filename extension before attempting to call dtrx. Non-zero dtrx exit...
authorPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 12 Aug 2014 15:42:09 +0000 (11:42 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Tue, 12 Aug 2014 15:42:09 +0000 (11:42 -0400)
crunch_scripts/decompress-all.py

index 460425f8b2e06c4ff7a42ca34206231150c98a0f..9a286b2c66b4640871b69b77aec03ff9622a2456 100755 (executable)
@@ -45,12 +45,18 @@ if streamname != None:
     os.chdir(streamname)
 else:
     streamname = '.'
-streamreader = filter(lambda s: s.name() == streamname, cr.all_streams())[0]
-filereader = streamreader.files()[filename]
-rc = subprocess.call(["dtrx", "-r", "-n", "-q", arvados.get_task_param_mount('input')])
-if rc == 0:
-    out = arvados.CollectionWriter()
-    out.write_directory_tree(outdir, max_manifest_depth=0)
-    task.set_output(out.finish())
+
+m = re.match(r'\.(gz|Z|bz2|tgz|tbz|zip|rar|7z|cab|deb|rpm|cpio|gem)$', arvados.get_task_param_mount('input'), re.IGNORECASE)
+
+if m != None:
+    rc = subprocess.call(["dtrx", "-r", "-n", "-q", arvados.get_task_param_mount('input')])
+    if rc == 0:
+        out = arvados.CollectionWriter()
+        out.write_directory_tree(outdir, max_manifest_depth=0)
+        task.set_output(out.finish())
+    else:
+        return rc
 else:
+    streamreader = filter(lambda s: s.name() == streamname, cr.all_streams())[0]
+    filereader = streamreader.files()[filename]
     task.set_output(streamname + filereader.as_manifest()[1:])