Merge branch 'master' into 2767-doc-updates
[arvados.git] / sdk / python / bin / arv-normalize
1 #!/usr/bin/env python
2
3 import argparse
4 import hashlib
5 import os
6 import re
7 import string
8 import sys
9 import logging
10
11 logger = logging.getLogger(os.path.basename(sys.argv[0]))
12
13 parser = argparse.ArgumentParser(
14     description='Read manifest on standard input and put normalized manifest on standard output.')
15
16 parser.add_argument('--extract', type=str, help="The file to extract from the input manifest")
17
18 args = parser.parse_args()
19
20 import arvados
21
22 r = sys.stdin.read()
23     
24 cr = arvados.CollectionReader(r)
25
26 if args.extract:
27     i = args.extract.rfind('/')
28     if i == -1:
29         stream = '.'
30         fn = args.extract
31     else:
32         stream = args.extract[:i]
33         fn = args.extract[(i+1):]
34     for s in cr.all_streams():
35         if s.name() == stream:
36             if fn in s.files():
37                 sys.stdout.write(s.files()[fn].as_manifest())
38 else:
39     sys.stdout.write(cr.manifest_text())