mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
#506 work on off-line installer generation script
This commit is contained in:
parent
006c5e6adf
commit
aebb9f42be
76
bundle.py
Normal file
76
bundle.py
Normal file
@ -0,0 +1,76 @@
|
||||
import base64
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
def encode_recursive(path):
|
||||
list = {}
|
||||
|
||||
for item in os.listdir(path):
|
||||
item_path = path + '/' + item
|
||||
|
||||
if os.path.isfile(item_path):
|
||||
handle = open(item_path, 'r')
|
||||
list[item] = base64.b64encode(bytes(handle.read(), 'UTF-8')).decode('ASCII')
|
||||
handle.close()
|
||||
else:
|
||||
list[item] = encode_recursive(item_path)
|
||||
|
||||
return list
|
||||
|
||||
def encode_files(files):
|
||||
list = {}
|
||||
|
||||
for item in files:
|
||||
item_path = './' + item
|
||||
|
||||
handle = open(item_path, 'r')
|
||||
list[item] = base64.b64encode(bytes(handle.read(), 'UTF-8')).decode('ASCII')
|
||||
handle.close()
|
||||
|
||||
return list
|
||||
|
||||
manifest = {
|
||||
"files" : {
|
||||
# common files
|
||||
"system" : encode_files([ "initenv.lua", "startup.lua", "configure.lua", "LICENSE" ]),
|
||||
"common" : encode_recursive("./scada-common"),
|
||||
"graphics" : encode_recursive("./graphics"),
|
||||
"lockbox" : encode_recursive("./lockbox"),
|
||||
# platform files
|
||||
"reactor-plc" : encode_recursive("./reactor-plc"),
|
||||
"rtu" : encode_recursive("./rtu"),
|
||||
"supervisor" : encode_recursive("./supervisor"),
|
||||
"coordinator" : encode_recursive("./coordinator"),
|
||||
"pocket" : encode_recursive("./pocket"),
|
||||
},
|
||||
"depends" : {
|
||||
"reactor-plc" : [ "reactor-plc", "system", "common", "graphics", "lockbox" ],
|
||||
"rtu" : [ "rtu", "system", "common", "graphics", "lockbox" ],
|
||||
"supervisor" : [ "supervisor", "system", "common", "graphics", "lockbox" ],
|
||||
"coordinator" : [ "coordinator", "system", "common", "graphics", "lockbox" ],
|
||||
"pocket" : [ "pocket", "system", "common", "graphics", "lockbox" ]
|
||||
}
|
||||
}
|
||||
|
||||
def write_items(body, items, indent):
|
||||
indent_str = " " * indent
|
||||
for key, value in items.items():
|
||||
if isinstance(value, str):
|
||||
body = body + f"{indent_str}['{key}'] = \"{value}\",\n"
|
||||
else:
|
||||
body = body + f"{indent_str}['{key}'] = {{\n"
|
||||
body = write_items(body, value, indent + 4)
|
||||
body = body + f"{indent_str}}},\n"
|
||||
|
||||
return body
|
||||
|
||||
|
||||
for app in [ "reactor-plc", "rtu", "supervisor", "coordinator", "pocket" ]:
|
||||
f = open("_" + app + ".lua", "w")
|
||||
body = "local application = {\n"
|
||||
for depend in manifest["depends"][app]:
|
||||
body = body + write_items("", { f"{depend}": manifest["files"][depend] }, 4)
|
||||
body = body + "}\n\n"
|
||||
f.write(body)
|
||||
f.close()
|
Loading…
Reference in New Issue
Block a user