Files
EMS-ESP32/scripts/build_interface.py
2023-02-12 14:14:08 +01:00

59 lines
1.8 KiB
Python

from pathlib import Path
from shutil import copytree, rmtree, copyfileobj
import os
import gzip
# brotli has better compression than gzip but requires https so leaving here for future
# import brotli
Import("env")
def gzipFile(file):
with open(file, 'rb') as f_in:
with gzip.open(file + '.gz', 'wb') as f_out:
copyfileobj(f_in, f_out)
os.remove(file)
# brotli version:
# with open(file + '.br', 'wb') as f_out:
# with open(file, 'rb') as f_in:
# f_out.write(brotli.compress(f_in.read(), quality=11))
# os.remove(file)
def flagExists(flag):
buildFlags = env.ParseFlags(env["BUILD_FLAGS"])
for define in buildFlags.get("CPPDEFINES"):
if (define == flag or (isinstance(define, list) and define[0] == flag)):
return True
def buildWeb():
os.chdir("interface")
print("Building web interface...")
try:
env.Execute("yarn install")
env.Execute("yarn run typesafe-i18n --no-watch")
with open("./src/i18n/i18n-util.ts") as r:
text = r.read().replace("Locales = 'pl'", "Locales = 'en'")
with open("./src/i18n/i18n-util.ts", "w") as w:
w.write(text)
env.Execute("yarn run build")
buildPath = Path("build")
wwwPath = Path("../data/www")
if wwwPath.exists() and wwwPath.is_dir():
rmtree(wwwPath)
print("Copying web files from build to data/www...")
copytree(buildPath, wwwPath)
for currentpath, folders, files in os.walk(wwwPath):
for file in files:
gzipFile(os.path.join(currentpath, file))
finally:
os.chdir("..")
if (len(BUILD_TARGETS) == 0 or "upload" in BUILD_TARGETS):
buildWeb()
else:
print("Skipping build web interface for target(s): " + ", ".join(BUILD_TARGETS))