Aegisub/tools/respack.py

37 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
import sys, os
manifestfile, cppfile, hfile = sys.argv[1:]
with open(manifestfile, 'r') as manifest:
files = dict((x.strip(), None) for x in manifest.readlines() if x.strip() != '')
sourcepath = os.path.split(manifestfile)[0]
buildpath = os.path.split(cppfile)[0]
for k in files:
sf = os.path.join(sourcepath, k)
bf = os.path.join(buildpath, k)
if os.path.isfile(sf):
files[k] = sf
elif os.path.isfile(bf):
files[k] = bf
else:
print("{}: Failed to open '{}'".format(manifestfile, k))
sys.exit(1)
with open(cppfile, 'w') as cpp:
cpp.write('#include "libresrc.h"\n')
with open(hfile, 'w') as h:
for k in files:
with open(files[k], 'rb') as f:
data = [str(int(x)) for x in f.read()]
datastr = ','.join(data)
name = os.path.splitext(os.path.basename(k))[0]
cpp.write('const unsigned char {}[] = {{{}}};\n'.format(name, datastr))
h.write('extern const unsigned char {}[{}];\n'.format(name, len(data)))