bcfeef8004
Adds a webpack plugin to package interface as PROGMEM into a header file in the framework. Adds a build flag to optionally enable serving from PROGMEM or SPIFFS as required Adds documentation changes to describe changes
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from pathlib import Path
|
|
from shutil import copytree
|
|
from shutil import rmtree
|
|
from subprocess import check_output, Popen, PIPE, STDOUT, CalledProcessError
|
|
from os import chdir
|
|
|
|
Import("env")
|
|
|
|
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():
|
|
chdir("interface")
|
|
print("Building interface with npm")
|
|
try:
|
|
env.Execute("npm install")
|
|
env.Execute("npm run build")
|
|
buildPath = Path("build")
|
|
wwwPath = Path("../data/www")
|
|
if wwwPath.exists() and wwwPath.is_dir():
|
|
rmtree(wwwPath)
|
|
if not flagExists("PROGMEM_WWW"):
|
|
print("Copying interface to data directory")
|
|
copytree(buildPath, wwwPath)
|
|
finally:
|
|
chdir("..")
|
|
|
|
if (len(BUILD_TARGETS) == 0 or "upload" in BUILD_TARGETS):
|
|
buildWeb()
|
|
else:
|
|
print("Skipping build interface step for target(s): " + ", ".join(BUILD_TARGETS))
|
|
|
|
|