This commit is contained in:
Gvidas Juknevičius 2024-08-25 22:35:33 +03:00
parent 5df9f33c2e
commit 4161160ab6
Signed by: MCorange
GPG Key ID: 12B1346D720B7FBB
4 changed files with 56 additions and 11 deletions

View File

@ -1,4 +1,5 @@
local __BUNDLER_FILES = {}
local __VERSION = "1.0.0d"
local __DEFAULT_IMPORT = require
local require = function(path)
if __BUNDLER_FILES[path] then
@ -9,10 +10,14 @@ local require = function(path)
return __DEFAULT_IMPORT(path)
end
end
rawset(__BUNDLER_FILES, "main.lua", function ()
rawset(__BUNDLER_FILES, "main", function ()
local updater = require("updater");
local log = require("log");
local MODULE_NAME = "keypadOS";
local MODULE_URL = "https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/keypad/keypadOS.lua";
if not __VERSION then
__VERSION = "DEV";
end
local function updaterLoop(upd)
while true do
sleep(1)
@ -20,6 +25,7 @@ rawset(__BUNDLER_FILES, "main.lua", function ()
end
end
local function _start()
log.info("Starting bootloader (" .. __VERSION .. ")");
local upd = updater.new();
upd:addEntry(MODULE_NAME .. ".lua", "keypad", MODULE_URL);
parallel.waitForAny(function() updaterLoop(upd) end, require(MODULE_NAME))
@ -28,7 +34,7 @@ rawset(__BUNDLER_FILES, "main.lua", function ()
mod.main = _start;
return mod;
end)
rawset(__BUNDLER_FILES, "log.lua", function ()
rawset(__BUNDLER_FILES, "log", function ()
local log = {};
log.__index = log;
function log.error(...)
@ -45,7 +51,7 @@ rawset(__BUNDLER_FILES, "log.lua", function ()
end
return log;
end)
rawset(__BUNDLER_FILES, "json.lua", function ()
rawset(__BUNDLER_FILES, "json", function ()
local json = { _version = "0.1.2" }
local encode
local escape_char_map = {
@ -327,7 +333,7 @@ rawset(__BUNDLER_FILES, "json.lua", function ()
end
return json
end)
rawset(__BUNDLER_FILES, "updater.lua", function ()
rawset(__BUNDLER_FILES, "updater", function ()
local log = require("log");
local json = require("json");
local _;
@ -357,7 +363,7 @@ rawset(__BUNDLER_FILES, "updater.lua", function ()
for path, entry in pairs(self.updated_files) do
if self:check(entry.branch) then
self:update(path, entry.url);
log.info("Updated!");
log.info("Rebooting!");
sleep(3);
os.reboot();
end
@ -366,6 +372,7 @@ rawset(__BUNDLER_FILES, "updater.lua", function ()
function updater:check(branch)
local curr = os.time();
if not ((math.abs(curr - self.last_check) >= self.threshold) and (self.curr_commit_hash ~= "")) then
log.debug("Not time for an update yet");
return false;
end
self.last_check = curr;
@ -381,8 +388,10 @@ rawset(__BUNDLER_FILES, "updater.lua", function ()
end
local data = json.decode(body);
if self.curr_commit_hash == "" then
log.debug("No commit hash found, setting");
self.curr_commit_hash = data[1].hash;
elseif data[1].hash == self.curr_commit_hash then
log.debug("Commit hash doesnt match, probbably an update");
return true;
end
return false;
@ -407,9 +416,20 @@ rawset(__BUNDLER_FILES, "updater.lua", function ()
local fd = fs.open(path, "w");
fd.write(body);
fd.close();
log.debug("New update written to disk (" .. path .. ")");
end
function updater:notify()
end
return updater;
end)
require("main.lua").main()
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

View File

@ -1,8 +1,13 @@
local updater = require("updater");
local log = require("log");
local MODULE_NAME = "keypadOS";
local MODULE_URL = "https://git.mcorangehq.xyz/xomf/keypadOS/raw/branch/keypad/keypadOS.lua";
if not __VERSION then
__VERSION = "DEV";
end
--- @param upd Updater
local function updaterLoop(upd)
while true do
@ -12,6 +17,7 @@ local function updaterLoop(upd)
end
local function _start()
log.info("Starting bootloader (" .. __VERSION .. ")");
local upd = updater.new();
upd:addEntry(MODULE_NAME .. ".lua", "keypad", MODULE_URL);
parallel.waitForAny(function() updaterLoop(upd) end, require(MODULE_NAME))

View File

@ -41,7 +41,7 @@ function updater:checkAndUpdateAll()
for path, entry in pairs(self.updated_files) do
if self:check(entry.branch) then
self:update(path, entry.url);
log.info("Updated!");
log.info("Rebooting!");
sleep(3);
os.reboot();
end
@ -51,6 +51,7 @@ end
function updater:check(branch)
local curr = os.time();
if not ((math.abs(curr - self.last_check) >= self.threshold) and (self.curr_commit_hash ~= "")) then
log.debug("Not time for an update yet");
return false;
end
self.last_check = curr;
@ -69,8 +70,10 @@ function updater:check(branch)
local data = json.decode(body);
if self.curr_commit_hash == "" then
log.debug("No commit hash found, setting");
self.curr_commit_hash = data[1].hash;
elseif data[1].hash == self.curr_commit_hash then
log.debug("Commit hash doesnt match, probbably an update");
return true;
end
@ -100,6 +103,7 @@ function updater:update(path, url)
local fd = fs.open(path, "w");
fd.write(body);
fd.close();
log.debug("New update written to disk (" .. path .. ")");
end
function updater:notify()

23
x.py
View File

@ -1,5 +1,4 @@
#!/usr/bin/python
import hashlib
OUTPUT="rtmc.lua";
FILES= [
"main.lua",
@ -8,12 +7,13 @@ FILES= [
"updater.lua"
]
VERSION="1.0.0d"
MINIMISE=True
def read_file(p: str) -> str:
buf = "";
with open("src/"+p, "r", encoding="utf-8") as f:
buf += f"rawset(__BUNDLER_FILES, \"{p}\", function ()\n";
buf += f"rawset(__BUNDLER_FILES, \"{p.replace(".lua", "")}\", function ()\n";
for line in f.readlines():
buf += " " + line;
buf += "\nend)";
@ -39,7 +39,8 @@ def minimise(buf: str) -> str:
# hasher.update(bytes(buf, "utf-8"));
# return hasher.hexdigest();
REQ_HEADER="""local __BUNDLER_FILES = {}
REQ_HEADER=f"""local __BUNDLER_FILES = {{}}
local __VERSION = "{VERSION}"
local __DEFAULT_IMPORT = require
local require = function(path)
if __BUNDLER_FILES[path] then
@ -52,6 +53,20 @@ local require = function(path)
end
"""
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
"""
def main():
buf = ""
@ -61,7 +76,7 @@ def main():
print(f"=== FILE: {file}");
buf += read_file(file);
buf += "require(\"main.lua\").main()\n";
buf += REQ_FOOTER;
if MINIMISE:
buf = minimise(buf);