diff --git a/mkespfs.py b/mkespfs.py new file mode 100755 index 0000000..5c9d4a2 --- /dev/null +++ b/mkespfs.py @@ -0,0 +1,43 @@ +#! /usr/bin/python3 + +from sys import argv, exit, stderr, stdout +from pathlib import Path +import re, gzip, struct + +MAGIC = 0x73665345 +FL_GZIP = 2 # gzipped file flag +FL_LAST = 1 # last entry file flag + +if len(argv) != 2 or not Path(argv[1]).is_dir(): + print("Usage: {} directory".format(argv[0]), file=stderr) + exit(1) +dir = argv[1] + +f_html = list(Path(dir).rglob('*.html')) +f_css = list(Path(dir).rglob('*.css')) +f_js = list(Path(dir).rglob('*.js')) +f_img = list(Path(dir).rglob('*.ico')) + list(Path(dir).rglob('*.png')) +f_all = f_html + f_css + f_js + f_img + +for fn in f_all: + if not fn.is_file(): continue + out_path = fn.relative_to(dir).as_posix().encode('ascii') + info = fn.stat() + data_un = fn.read_bytes() + data_comp = gzip.compress(data_un) + + print("Processing {} -> {}[{}], {}->{} bytes".format(fn, out_path, len(out_path), info.st_size, + len(data_comp)), file=stderr) + + header = struct.pack('