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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/usr/bin/python
#----------------------------------------------------
# Version: 0.2.1
# Author: Florian "Bluewind" Pritz <f-p@gmx.at>
#
# Licensed under WTFPL v2
# (see COPYING for full license text)
#
#----------------------------------------------------
# got bored and a.sh has some problems with spaces
#----------------------------------------------------
import sys
import os
from optparse import OptionParser
from subprocess import Popen, PIPE
def main():
usage = "usage: %prog [options] <files>"
p = OptionParser(usage)
p.add_option("-f", "--file", dest="tarname", default=False,
help="use <file>.tar.gz instead of $1.tar.gz", metavar="<file>")
p.add_option("--force", action="store_true", dest="force", default=False,
help="overwrite existing target files")
p.add_option("-b", "--bzip2", action="store_true", dest="bz2", default=False,
help="use bzip2 compression")
p.add_option("-u", "--uncompressed", action="store_true", dest="uncompressed", default=False,
help="don't use compression at all")
p.add_option("-x", "--xz", action="store_true", dest="xz", default=False,
help="use xz compression")
(options, args) = p.parse_args()
if len(sys.argv) == 1:
p.print_help()
sys.exit()
if options.tarname:
tarname = options.tarname
else:
tarname = args[0]+".tar"
tarcmd = ['bsdtar', '-c']
if options.bz2:
tarname += ".bz2"
tarcmd.extend(['-jf', tarname])
elif options.uncompressed:
tarcmd.extend(['-f', tarname])
elif options.xz:
tarname += ".xz"
tarcmd.extend(['-Jf', tarname])
else:
tarname += ".gz"
tarcmd.extend(['-zf', tarname])
if not options.force:
file_exists(tarname)
Popen(merge([tarcmd, args]), stdout=PIPE).communicate()[0]
def merge(seq):
merged = []
for s in seq:
for x in s:
merged.append(x)
return merged
def file_exists(filename):
if os.path.exists(filename):
sys.stderr.write('Target "'+filename+'" already exists. Use --force to overwrite.\n')
sys.exit(1)
if __name__ == '__main__':
main()
|