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