mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
62 lines
1.7 KiB
Python
62 lines
1.7 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")
|
|
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)
|
|
print("Setting locale to 'en'")
|
|
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 not (env.IsCleanTarget()):
|
|
buildWeb()
|