UWU
This commit is contained in:
parent
1cfca1d5b8
commit
6f61e9549b
31
build.sh
31
build.sh
|
@ -1,31 +0,0 @@
|
||||||
SRC_DIR="./src"
|
|
||||||
BUILD_DIR="./build"
|
|
||||||
OUTPUT_FILE="$BUILD_DIR/startup.lua"
|
|
||||||
BOOT_FILE="$SRC_DIR/boot.lua"
|
|
||||||
MAIN_FILE="$SRC_DIR/main.lua"
|
|
||||||
|
|
||||||
mkdir -p "$BUILD_DIR"
|
|
||||||
|
|
||||||
> "$OUTPUT_FILE"
|
|
||||||
|
|
||||||
|
|
||||||
if [ -e "$BOOT_FILE" ]; then
|
|
||||||
echo "-- File: boot.lua" >> "$OUTPUT_FILE"
|
|
||||||
cat "$BOOT_FILE" >> "$OUTPUT_FILE"
|
|
||||||
echo >> "$OUTPUT_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for file in "$SRC_DIR"/*.lua; do
|
|
||||||
if [ -e "$file" ] && [ "$(basename "$file")" != "boot.lua" ] && [ "$(basename "$file")" != "main.lua" ]; then
|
|
||||||
filename=$(basename "$file")
|
|
||||||
echo "-- File: $filename" >> "$OUTPUT_FILE"
|
|
||||||
cat "$file" >> "$OUTPUT_FILE"
|
|
||||||
echo >> "$OUTPUT_FILE"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -e "$MAIN_FILE" ]; then
|
|
||||||
echo "-- File: main.lua" >> "$OUTPUT_FILE"
|
|
||||||
cat "$MAIN_FILE" >> "$OUTPUT_FILE"
|
|
||||||
echo >> "$OUTPUT_FILE"
|
|
||||||
fi
|
|
182
keypadOS.lua
Normal file
182
keypadOS.lua
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
|
||||||
|
-- FILE: src/boot.lua
|
||||||
|
|
||||||
|
-- keycardOS "bootloader", has no access to basalt
|
||||||
|
-- intended for checking for updates, and automatically updating basalt if it is missing
|
||||||
|
|
||||||
|
LAST_USED = os.time()
|
||||||
|
|
||||||
|
local function checkForUpdate()
|
||||||
|
current_time = os.time()
|
||||||
|
difference = math.abs(current_time - LAST_USED)
|
||||||
|
print("Checking for update... difference: " .. tostring(difference))
|
||||||
|
--its been considerable time since the keypad was interacted with
|
||||||
|
--therefore it's time to force an update down the users throat (microsoft moment)
|
||||||
|
-- if difference > 4 then
|
||||||
|
if difference > .5 then
|
||||||
|
--logic for updating
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function updateChecker()
|
||||||
|
while true do
|
||||||
|
checkForUpdate()
|
||||||
|
sleep(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function getBasalt()
|
||||||
|
if fs.exists("basalt.lua") then
|
||||||
|
mPrint("Basalt found!")
|
||||||
|
else
|
||||||
|
mPrint("Download basalt...")
|
||||||
|
basalt_code = http.get("https://raw.githubusercontent.com/Pyroxenium/Basalt/master/docs/versions/latest.lua").readAll()
|
||||||
|
mPrint("Install basalt...")
|
||||||
|
local file = fs.open("basalt.lua", "w")
|
||||||
|
file.write(basalt_code)
|
||||||
|
file.close()
|
||||||
|
mPrint("Rebooting...")
|
||||||
|
os.reboot()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
KEYPADOS_VERSION = "3.0"
|
||||||
|
MONITOR = peripheral.find("monitor")
|
||||||
|
|
||||||
|
local function boot()
|
||||||
|
mon_reset(0.5);
|
||||||
|
mPrint("keypadOS v" .. KEYPADOS_VERSION)
|
||||||
|
mon_reset(1);
|
||||||
|
end
|
||||||
|
|
||||||
|
boot()
|
||||||
|
|
||||||
|
local files = {}
|
||||||
|
local globalRequire = require -- Store default require reference
|
||||||
|
local require = function(path) -- Will return saved file or attempt default lua require
|
||||||
|
return files[path] or globalRequire(path)
|
||||||
|
end
|
||||||
|
|
||||||
|
files["boot.lua"] = function(...)
|
||||||
|
local function boot()
|
||||||
|
mon_reset(0.5);
|
||||||
|
mPrint("keypadOS v" .. KEYPADOS_VERSION)
|
||||||
|
mon_reset(1);
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
boot
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- FILE: src/init.lua
|
||||||
|
|
||||||
|
local basalt = require("basalt")
|
||||||
|
local monitor = peripheral.find("monitor")
|
||||||
|
local drive = peripheral.find("drive")
|
||||||
|
local main = basalt.addMonitor()
|
||||||
|
main:setMonitor(monitor)
|
||||||
|
btnX = 1
|
||||||
|
btnY = 3
|
||||||
|
pin = ""
|
||||||
|
-- FILE: src/config.lua
|
||||||
|
|
||||||
|
correctPin = "42169"
|
||||||
|
-- FILE: src/unlock_door.lua
|
||||||
|
|
||||||
|
function unlockDoor()
|
||||||
|
|
||||||
|
if drive.isDiskPresent() then
|
||||||
|
if drive.getDiskLabel() == correctPin then
|
||||||
|
pin = correctPin
|
||||||
|
drive:ejectDisk()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
basalt.debug("test")
|
||||||
|
if pin == correctPin then
|
||||||
|
enterButton:setBackground(colors.green)
|
||||||
|
pinLabel:setText("Welcome")
|
||||||
|
redstone.setOutput("front", true)
|
||||||
|
|
||||||
|
if drive.isDiskPresent() then
|
||||||
|
if drive.getDiskLabel() == nil then
|
||||||
|
drive.setDiskLabel(correctPin)
|
||||||
|
pinLabel:setText("Crd set")
|
||||||
|
drive:ejectDisk()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
pinLabel:setText("Wrong")
|
||||||
|
enterButton:setBackground(colors.red)
|
||||||
|
end
|
||||||
|
local thread = main:addThread()
|
||||||
|
:start(resetEverything)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function resetEverything()
|
||||||
|
sleep(2)
|
||||||
|
pin = ""
|
||||||
|
pinLabel:setText("")
|
||||||
|
redstone.setOutput("front", false)
|
||||||
|
enterButton:setBackground(colors.blue)
|
||||||
|
end
|
||||||
|
|
||||||
|
function addToPin(i)
|
||||||
|
|
||||||
|
if #pin >= 5 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
pin = pin .. tostring(i)
|
||||||
|
pinLabel:setText(pin)
|
||||||
|
end
|
||||||
|
-- FILE: src/utils.lua
|
||||||
|
|
||||||
|
MONITOR_Y = 1
|
||||||
|
function mPrint(text)
|
||||||
|
MONITOR.setCursorPos(1,y)
|
||||||
|
MONITOR.write(text)
|
||||||
|
MONITOR_Y = MONITOR_Y + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function mon_reset(scale)
|
||||||
|
MONITOR.clear()
|
||||||
|
MONITOR.setTextScale(scale)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- FILE: src/main.lua
|
||||||
|
|
||||||
|
pinLabel = main:addLabel()
|
||||||
|
:setText("")
|
||||||
|
:setFontSize(1)
|
||||||
|
|
||||||
|
enterButton = main:addButton()
|
||||||
|
:setText(">>>>")
|
||||||
|
:setBackground(colors.blue)
|
||||||
|
:setPosition(6,3)
|
||||||
|
:setSize(1.5,3.2)
|
||||||
|
:onClick(unlockDoor)
|
||||||
|
|
||||||
|
for i = 1, 9 do
|
||||||
|
local button = main:addButton()
|
||||||
|
:setPosition(btnX,btnY)
|
||||||
|
:setText(tostring(i))
|
||||||
|
:setSize(2,1)
|
||||||
|
:onClick(
|
||||||
|
function()
|
||||||
|
addToPin(i)
|
||||||
|
end)
|
||||||
|
btnX = btnX + 2
|
||||||
|
|
||||||
|
if btnX >= 6 then
|
||||||
|
btnY = btnY + 1
|
||||||
|
btnX = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
parallel.waitForAll(basalt.autoUpdate, updateChecker)
|
8
pyproject.toml
Normal file
8
pyproject.toml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[tool.pylint.'MESSAGES CONTROL']
|
||||||
|
disable = [
|
||||||
|
"unnecessary-semicolon",
|
||||||
|
"trailing-newlines",
|
||||||
|
"missing-docstring"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
34
src/boot.lua
34
src/boot.lua
|
@ -7,40 +7,23 @@ local function checkForUpdate()
|
||||||
current_time = os.time()
|
current_time = os.time()
|
||||||
difference = math.abs(current_time - LAST_USED)
|
difference = math.abs(current_time - LAST_USED)
|
||||||
print("Checking for update... difference: " .. tostring(difference))
|
print("Checking for update... difference: " .. tostring(difference))
|
||||||
--its been considerable time since the keypad was interacted with, therefore it's time to force an update down the users throat (microsoft moment)
|
--its been considerable time since the keypad was interacted with
|
||||||
|
--therefore it's time to force an update down the users throat (microsoft moment)
|
||||||
|
-- if difference > 4 then
|
||||||
if difference > .5 then
|
if difference > .5 then
|
||||||
|
|
||||||
--logic for updating
|
--logic for updating
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function updateChecker()
|
function updateChecker()
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
checkForUpdate()
|
checkForUpdate()
|
||||||
sleep(1)
|
sleep(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function boot()
|
local function getBasalt()
|
||||||
KEYPADOS_VERSION = "3.0"
|
|
||||||
|
|
||||||
monitor = peripheral.find("monitor")
|
|
||||||
monitor.clear()
|
|
||||||
monitor.setTextScale(0.5)
|
|
||||||
y = 1
|
|
||||||
|
|
||||||
function mPrint(text)
|
|
||||||
monitor.setCursorPos(1,y)
|
|
||||||
monitor.write(text)
|
|
||||||
y = y + 1
|
|
||||||
end
|
|
||||||
|
|
||||||
mPrint("keypadOS v" .. KEYPADOS_VERSION)
|
|
||||||
|
|
||||||
if fs.exists("basalt.lua") then
|
if fs.exists("basalt.lua") then
|
||||||
mPrint("Basalt found!")
|
mPrint("Basalt found!")
|
||||||
else
|
else
|
||||||
|
@ -53,10 +36,15 @@ local function boot()
|
||||||
mPrint("Rebooting...")
|
mPrint("Rebooting...")
|
||||||
os.reboot()
|
os.reboot()
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
monitor.setTextScale(1)
|
KEYPADOS_VERSION = "3.0"
|
||||||
monitor.clear()
|
MONITOR = peripheral.find("monitor")
|
||||||
|
|
||||||
|
local function boot()
|
||||||
|
mon_reset(0.5);
|
||||||
|
mPrint("keypadOS v" .. KEYPADOS_VERSION)
|
||||||
|
mon_reset(1);
|
||||||
end
|
end
|
||||||
|
|
||||||
boot()
|
boot()
|
||||||
|
|
11
src/utils.lua
Normal file
11
src/utils.lua
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
MONITOR_Y = 1
|
||||||
|
function mPrint(text)
|
||||||
|
MONITOR.setCursorPos(1,y)
|
||||||
|
MONITOR.write(text)
|
||||||
|
MONITOR_Y = MONITOR_Y + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function mon_reset(scale)
|
||||||
|
MONITOR.clear()
|
||||||
|
MONITOR.setTextScale(scale)
|
||||||
|
end
|
31
x.py
Executable file
31
x.py
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
OUTPUT="keypadOS.lua";
|
||||||
|
FILES= [
|
||||||
|
"src/boot.lua",
|
||||||
|
"src/init.lua",
|
||||||
|
"src/config.lua",
|
||||||
|
"src/unlock_door.lua",
|
||||||
|
"src/utils.lua",
|
||||||
|
"src/main.lua",
|
||||||
|
]
|
||||||
|
|
||||||
|
def read_file(p: str) -> str:
|
||||||
|
buf = "";
|
||||||
|
with open(p, "r", encoding="utf-8") as f:
|
||||||
|
buf = f"\n-- FILE: {p}\n\n" + f.read();
|
||||||
|
return buf;
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
buf = "";
|
||||||
|
for file in FILES:
|
||||||
|
print(f"=== FILE: {file}");
|
||||||
|
buf += read_file(file);
|
||||||
|
with open(OUTPUT, "w", encoding="utf-8") as f:
|
||||||
|
f.write(buf);
|
||||||
|
print("DONE");
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user