a3858d279d8cb9fb1fbd636b51b5217ac2403e95
[arvados.git] / crunch_scripts / decompress-all.py
1 #!/usr/bin/env python
2
3 import arvados
4 import re
5 import subprocess
6
7 arvados.job_setup.one_task_per_input_file(if_sequence=0, and_end_task=True,
8                                           input_as_path=True)
9
10 task = arvados.current_task()
11
12 input_file = arvados.gettaskparam('input')
13
14 result = re.match(r"(^[a-f0-9]{32}\+\d+)(\+\S+)*(/.*)(/.*)?$", input_file)
15
16 outdir = os.path.join(task.tmpdir, "output")
17 os.mkdirs(outdir)
18 os.chdir(outdir)
19
20 if result != None:
21     cr = arvados.CollectionReader(re.group(1))
22     streamname = '.'
23     if re.group(3) != None:
24         streamname += re.group(2)
25         filename = re.group(3)[1:]
26     else:
27         filename = re.group(2)[1:]
28
29     os.mkdirs(streamname)
30     os.chdir(streamname)
31     streamreader = filter(lambda s: s.name() == streamname, cr.all_streams())[0]
32     filereader = stream.files()[filename]
33     rc = subprocess.call("dtrx", "-r", "-n", arvados.get_task_param_mount('input'))
34     if rc == 0:
35         out.write_directory_tree(outdir, max_manifest_depth=0)
36         arvados.task_set_output(out.finish())
37     else:
38         arvados.task_set_output(streamname + filereader.as_manifest()[1:])
39 else:
40     sys.exit(1)