2024-08-17 23:08:11 +00:00
|
|
|
#!/usr/bin/python
|
2024-08-25 18:30:33 +00:00
|
|
|
OUTPUT="rtmc.lua";
|
2024-08-17 23:08:11 +00:00
|
|
|
FILES= [
|
2024-08-18 00:34:13 +00:00
|
|
|
"main.lua",
|
2024-08-25 18:30:33 +00:00
|
|
|
"log.lua",
|
|
|
|
"json.lua",
|
|
|
|
"updater.lua"
|
2024-08-17 23:08:11 +00:00
|
|
|
]
|
|
|
|
|
2024-08-25 19:35:33 +00:00
|
|
|
VERSION="1.0.0d"
|
2024-08-18 11:37:59 +00:00
|
|
|
MINIMISE=True
|
|
|
|
|
2024-08-17 23:08:11 +00:00
|
|
|
def read_file(p: str) -> str:
|
|
|
|
buf = "";
|
2024-08-18 00:34:13 +00:00
|
|
|
with open("src/"+p, "r", encoding="utf-8") as f:
|
2024-08-25 19:35:33 +00:00
|
|
|
buf += f"rawset(__BUNDLER_FILES, \"{p.replace(".lua", "")}\", function ()\n";
|
2024-08-18 00:34:13 +00:00
|
|
|
for line in f.readlines():
|
2024-08-18 11:37:59 +00:00
|
|
|
buf += " " + line;
|
|
|
|
buf += "\nend)";
|
|
|
|
if not MINIMISE:
|
|
|
|
buf += f"-- FILE END: {p} --\n";
|
|
|
|
else:
|
|
|
|
buf += "\n";
|
2024-08-17 23:08:11 +00:00
|
|
|
return buf;
|
|
|
|
|
2024-08-18 11:37:59 +00:00
|
|
|
def minimise(buf: str) -> str:
|
|
|
|
newbuf = "";
|
|
|
|
for line in buf.splitlines():
|
|
|
|
if line.strip().startswith("--"):
|
|
|
|
continue;
|
|
|
|
if line.strip() == "":
|
|
|
|
continue
|
|
|
|
newbuf += line + "\n";
|
|
|
|
return newbuf;
|
2024-08-17 23:08:11 +00:00
|
|
|
|
2024-08-25 18:30:33 +00:00
|
|
|
# def get_hash(buf: str) -> str:
|
|
|
|
# hasher = hashlib.sha1();
|
|
|
|
#
|
|
|
|
# hasher.update(bytes(buf, "utf-8"));
|
|
|
|
# return hasher.hexdigest();
|
2024-08-18 12:02:01 +00:00
|
|
|
|
2024-08-25 19:35:33 +00:00
|
|
|
REQ_HEADER=f"""local __BUNDLER_FILES = {{}}
|
|
|
|
local __VERSION = "{VERSION}"
|
2024-08-25 19:03:37 +00:00
|
|
|
local __DEFAULT_IMPORT = require
|
|
|
|
local require = function(path)
|
|
|
|
if __BUNDLER_FILES[path] then
|
|
|
|
return __BUNDLER_FILES[path]()
|
|
|
|
elseif __BUNDLER_FILES[path .. ".lua"] then
|
|
|
|
return __BUNDLER_FILES[path .. ".lua"]()
|
|
|
|
else
|
|
|
|
return __DEFAULT_IMPORT(path)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
"""
|
|
|
|
|
2024-08-25 19:35:33 +00:00
|
|
|
REQ_FOOTER="""
|
|
|
|
if pcall(debug.getlocal, 4, 1) then
|
|
|
|
local exports = {};
|
|
|
|
for k, v in pairs(__BUNDLER_FILES) do
|
|
|
|
if k ~= "main" then
|
|
|
|
exports[k] = v();
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return exports;
|
|
|
|
else
|
|
|
|
require("main").main()
|
|
|
|
end
|
|
|
|
"""
|
|
|
|
|
2024-08-25 19:03:37 +00:00
|
|
|
|
2024-08-17 23:08:11 +00:00
|
|
|
def main():
|
2024-08-18 00:34:13 +00:00
|
|
|
buf = ""
|
2024-08-25 19:03:37 +00:00
|
|
|
buf += REQ_HEADER;
|
2024-08-25 18:30:33 +00:00
|
|
|
# buf += "local __UPDATE_HASH = __BUNDLER_REPLACE_HASH__\n";
|
2024-08-17 23:08:11 +00:00
|
|
|
for file in FILES:
|
|
|
|
print(f"=== FILE: {file}");
|
|
|
|
buf += read_file(file);
|
2024-08-18 00:34:13 +00:00
|
|
|
|
2024-08-25 19:35:33 +00:00
|
|
|
buf += REQ_FOOTER;
|
2024-08-18 11:37:59 +00:00
|
|
|
|
|
|
|
if MINIMISE:
|
|
|
|
buf = minimise(buf);
|
2024-08-25 18:30:33 +00:00
|
|
|
#update_hash = get_hash(buf);
|
|
|
|
# buf = buf.replace("__BUNDLER_REPLACE_HASH__", f"\"{update_hash}\"");
|
2024-08-18 00:34:13 +00:00
|
|
|
|
2024-08-25 18:30:33 +00:00
|
|
|
#print(f"=== UPDATE HASH: {update_hash}")
|
2024-08-17 23:08:11 +00:00
|
|
|
with open(OUTPUT, "w", encoding="utf-8") as f:
|
|
|
|
f.write(buf);
|
|
|
|
print("DONE");
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main();
|
|
|
|
|