import gzip
import os

# 定义文件路径
web_folder = "web"
output_header = "esp8266/web.h"
files_to_compress = ["index.html", "styles.css", "script.js"]

# 压缩文件并生成 C 常量
def compress_file(input_path, output_path):
    with open(input_path, 'rb') as f_in:
        with gzip.open(output_path, 'wb') as f_out:
            f_out.writelines(f_in)

    with open(output_path, 'rb') as f:  # 修复 os.open 为 open
        compressed_data = f.read()

    return compressed_data

# 生成 web.h 文件
def generate_header():
    with open(output_header, 'w', encoding='utf-8') as header_file:
        header_file.write("#ifndef WEB_H\n#define WEB_H\n\n")

        for file_name in files_to_compress:
            input_path = os.path.join(web_folder, file_name)
            output_path = input_path + ".gz"

            if os.path.exists(input_path):
                compressed_data = compress_file(input_path, output_path)
                constant_name = file_name.replace('.', '_').upper()

                header_file.write(f"const char {constant_name}[] = {{\n")
                header_file.write(",\n".join(
                    [
                        ", ".join(f"0x{byte:02x}" for byte in compressed_data[i:i+16])
                        for i in range(0, len(compressed_data), 16)
                    ]
                ))
                header_file.write("\n};\n\n")

        header_file.write("#endif // WEB_H\n")

if __name__ == "__main__":
    generate_header()
    print(f"Header file '{output_header}' generated successfully.")