server/process/compress.py

81 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
from sys import argv, exit
from string import join
import os
import os.path
gamename='Eressea'
if(len(argv) >= 3):
gamename=argv[2]
template="""#!/bin/bash
#PATH=$PATH:$HOME/bin
addr=%(email)s
[ $# -ge 1 ] && addr=$1
[ -z $addr ] || $ERESSEA/server/bin/send-%(compression)s-report $addr '%(gamename)s Report #%(turn)s' %(files)s
"""
turn = argv[1]
try:
infile = file("reports.txt", "r")
except:
print "%s: reports.txt file does not exist" % (argv[0], )
exit(0)
extras = []
stats = '../parteien'
if os.path.isfile(stats):
extra = 'wochenbericht-%s.txt' % turn
os.symlink(stats, extra)
extras.append(extra)
express='../express-%s.txt' % turn
if os.path.isfile(express):
extras.append(express)
for line in infile.readlines():
settings = line[:-1].split(":")
options = { "turn" : turn}
options["gamename"] = gamename
for setting in settings:
try:
key, value = setting.split("=")
options[key] = value
except:
print "Invalid input line", line
if not options.has_key("reports"):
continue
reports = options["reports"].split(",")
prefix = "%(turn)s-%(faction)s." % options
if options["compression"]=="zip":
output = prefix+"zip"
files = [output]
if not os.path.isfile(output):
parameters = []
for extension in reports:
filename = "%s%s" % (prefix, extension)
if os.path.isfile(filename):
parameters = parameters + [ filename ]
os.system("zip %s -q -m -j %s" % (output, join(parameters," ")))
else:
files = []
for extension in reports:
if extension!='':
filename = "%s%s" % (prefix, extension)
output = "%s%s.bz2" % (prefix, extension)
files = files+[output]
if os.path.isfile(filename):
if os.path.isfile(output):
continue
os.system("bzip2 %s" % filename)
for extra in extras:
if os.path.isfile(extra):
files = files + [extra]
options["files"] = join(files, " ")
batch = file("%s.sh" % options["faction"], "w")
batch.write(template % options)
batch.close()
infile.close()