mirror of https://github.com/jeelabs/esp-link.git
parent
5de54a6750
commit
6153c29c8d
@ -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('<IBBHII', MAGIC, FL_GZIP, 0, len(out_path), len(data_comp), info.st_size) |
||||
stdout.buffer.write(header) |
||||
stdout.buffer.write(out_path) |
||||
if len(out_path)%4 != 0: |
||||
stdout.buffer.write(bytes(4)[:4-len(out_path)%4]) |
||||
stdout.buffer.write(data_comp) |
||||
if len(data_comp)%4 != 0: |
||||
stdout.buffer.write(bytes(4)[:4-len(data_comp)%4]) |
||||
|
||||
trailer = struct.pack('<IBBHII', MAGIC, FL_LAST, 0, 0, 0, 0) |
||||
|
||||
print("DONE", file=stderr) |
Loading…
Reference in new issue