35 lines
1.1 KiB
Python
35 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))
|