blob: 22cca7574509bdb28fb78b2b488aa485cb22c3e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import sys
import tarfile
import copy
import os
import uuid
def main(args):
output_file, args = args[0], args[1:]
# heretic@: Splits files on which could be merged( files ) and which should not be merged( expendables )
# expendables will be in output_file in form {name}{ordinal number of archive in args[]}.{extension}
try:
split_i = args.index('-no-merge')
except ValueError:
split_i = len(args)
files, expendables = args[:split_i], args[split_i + 1 :]
with tarfile.open(output_file, 'w') as outf:
for x in files:
with tarfile.open(x) as tf:
for tarinfo in tf:
new_tarinfo = copy.deepcopy(tarinfo)
if new_tarinfo.name in expendables:
dirname, basename = os.path.split(new_tarinfo.name)
basename_parts = basename.split('.', 1)
new_basename = '.'.join([basename_parts[0] + str(uuid.uuid4())] + basename_parts[1:])
new_tarinfo.name = os.path.join(dirname, new_basename)
outf.addfile(new_tarinfo, tf.extractfile(tarinfo))
if __name__ == '__main__':
main(sys.argv[1:])
|