@ -7,8 +7,37 @@ import json
from datetime import date
from pathlib import Path
import subprocess
import configparser
Import ( " env " )
import htmlPreprocessorDefines as prepro
def get_build_flags ( ) :
config = configparser . ConfigParser ( )
config . read ( ' platformio.ini ' )
global build_flags
build_flags = config [ " env: " + env [ ' PIOENV ' ] ] [ ' build_flags ' ] . split ( ' \n ' )
for i in range ( len ( build_flags ) ) :
build_flags [ i ] = build_flags [ i ] [ 2 : ]
# translate board
board = config [ " env: " + env [ ' PIOENV ' ] ] [ ' board ' ]
if board == " esp12e " or board == " esp8285 " :
build_flags . append ( " ESP8266 " )
elif board == " lolin_d32 " :
build_flags . append ( " ESP32 " )
elif board == " lolin_s2_mini " :
build_flags . append ( " ESP32 " )
build_flags . append ( " ESP32-S2 " )
elif board == " lolin_c3_mini " :
build_flags . append ( " ESP32 " )
build_flags . append ( " ESP32-C3 " )
elif board == " esp32-s3-devkitc-1 " :
build_flags . append ( " ESP32 " )
build_flags . append ( " ESP32-S3 " )
def get_git_sha ( ) :
try :
@ -50,38 +79,46 @@ def readVersionFull(path):
return version
def htmlParts ( file , header , nav , footer , versionPath , lang ) :
p = " " ;
f = open ( file , " r " )
lines = f . readlines ( )
f . close ( ) ;
f = open ( header , " r " )
h = f . read ( ) . strip ( )
h = f . readlines ( )
f . close ( )
f = open ( nav , " r " )
n = f . read ( ) . strip ( )
n = f . readlines ( )
f . close ( )
f = open ( footer , " r " )
fo = f . read ( ) . strip ( )
fo = f . readlines ( )
f . close ( )
linesExt = [ ]
for line in lines :
line = line . replace ( " { #HTML_HEADER} " , h )
line = line . replace ( " { #HTML_NAV} " , n )
line = line . replace ( " { #HTML_FOOTER} " , fo )
p + = line
if line . find ( " { #HTML_HEADER} " ) != - 1 :
linesExt . extend ( h )
elif line . find ( " { #HTML_NAV} " ) != - 1 :
linesExt . extend ( n )
elif line . find ( " { #HTML_FOOTER} " ) != - 1 :
linesExt . extend ( fo )
else :
linesExt . append ( line )
linesMod = prepro . conv ( linesExt , build_flags )
#placeholders
version = readVersion ( versionPath ) ;
link = ' <a target= " _blank " href= " https://github.com/lumapu/ahoy/commits/ ' + get_git_sha ( ) + ' " >GIT SHA: ' + get_git_sha ( ) + ' :: ' + version + ' </a> '
p = " "
for line in linesMod :
p + = line
p = p . replace ( " { #VERSION} " , version )
p = p . replace ( " { #VERSION_FULL} " , readVersionFull ( versionPath ) )
p = p . replace ( " { #VERSION_GIT} " , link )
# remove if - endif ESP32
p = checkIf ( p )
p = translate ( file , p , lang )
p = translate ( " general " , p , lang ) # menu / header / footer
@ -90,30 +127,6 @@ def htmlParts(file, header, nav, footer, versionPath, lang):
f . close ( ) ;
return p
def checkIf ( data ) :
if ( env [ ' PIOENV ' ] [ 0 : 5 ] == " esp32 " ) or env [ ' PIOENV ' ] [ 0 : 4 ] == " open " :
data = data . replace ( " <!--IF_ESP32--> " , " " )
data = data . replace ( " <!--ENDIF_ESP32--> " , " " )
data = data . replace ( " /*IF_ESP32*/ " , " " )
data = data . replace ( " /*ENDIF_ESP32*/ " , " " )
else :
while 1 :
start = data . find ( " <!--IF_ESP32--> " )
end = data . find ( " <!--ENDIF_ESP32--> " ) + 18
if - 1 == start :
break
else :
data = data [ 0 : start ] + data [ end : ]
while 1 :
start = data . find ( " /*IF_ESP32*/ " )
end = data . find ( " /*ENDIF_ESP32*/ " ) + 15
if - 1 == start :
break
else :
data = data [ 0 : start ] + data [ end : ]
return data
def findLang ( file ) :
with open ( ' ../lang.json ' ) as j :
lang = json . load ( j )
@ -189,33 +202,41 @@ def convert2Header(inFile, versionPath, lang):
f . write ( " #endif /*__ {} _ {} _H__*/ \n " . format ( define , define2 ) )
f . close ( )
# delete all files in the 'h' dir
wd = ' web/html/h '
if os . path . exists ( wd ) :
for f in os . listdir ( wd ) :
os . remove ( os . path . join ( wd , f ) )
wd + = " /tmp "
if os . path . exists ( wd ) :
for f in os . listdir ( wd ) :
os . remove ( os . path . join ( wd , f ) )
# grab all files with following extensions
os . chdir ( ' ./web/html ' )
types = ( ' *.html ' , ' *.css ' , ' *.js ' , ' *.ico ' , ' *.json ' ) # the tuple of file types
files_grabbed = [ ]
for files in types :
files_grabbed . extend ( glob . glob ( files ) )
Path ( " h " ) . mkdir ( exist_ok = True )
Path ( " tmp " ) . mkdir ( exist_ok = True ) # created to check if webpages are valid with all replacements
shutil . copyfile ( " style.css " , " tmp/style.css " )
# get language from environment
lang = " en "
if env [ ' PIOENV ' ] [ - 3 : ] == " -de " :
lang = " de "
# go throw the array
for val in files_grabbed :
convert2Header ( val , " ../../defines.h " , lang )
def main ( ) :
get_build_flags ( )
# delete all files in the 'h' dir
wd = ' web/html/h '
if os . path . exists ( wd ) :
for f in os . listdir ( wd ) :
os . remove ( os . path . join ( wd , f ) )
wd + = " /tmp "
if os . path . exists ( wd ) :
for f in os . listdir ( wd ) :
os . remove ( os . path . join ( wd , f ) )
# grab all files with following extensions
os . chdir ( ' ./web/html ' )
types = ( ' *.html ' , ' *.css ' , ' *.js ' , ' *.ico ' , ' *.json ' ) # the tuple of file types
files_grabbed = [ ]
for files in types :
files_grabbed . extend ( glob . glob ( files ) )
Path ( " h " ) . mkdir ( exist_ok = True )
Path ( " tmp " ) . mkdir ( exist_ok = True ) # created to check if webpages are valid with all replacements
shutil . copyfile ( " style.css " , " tmp/style.css " )
# get language from environment
lang = " en "
if env [ ' PIOENV ' ] [ - 3 : ] == " -de " :
lang = " de "
# go throw the array
for val in files_grabbed :
convert2Header ( val , " ../../defines.h " , lang )
main ( )